Jeffrey Cunningham jeffrey@jkcunningham.com writes:
According to the ASDF documentation: http://common-lisp.net/project/asdf/asdf.html#Using-ASDF
The system foo is loaded (and compiled, if necessary) by evaluating the following Lisp form: (asdf:load-system :foo) On some implementations (namely recent versions of ABCL, Allegro CL, Clozure CL, CMUCL, ECL, GNU CLISP, LispWorks, MKCL, *SBCL* and XCL), ASDF hooks into the |CL:REQUIRE| facility and you can just use: (require :foo) Is this not correct?
It is correct. Evaluating (asdf:load-system :foo) or (require :foo) will (compile and) load the :foo system.
However, when you compile a file containing (require :foo) (describe 'foo::bar) you do not evaluate the `(require :foo)' form; you generate code such that, when you later load the file, (require :foo) will be executed. So when the compiler attempts to read the next form, (describe 'foo::bar), the symbol 'foo::bar does not yet exist, because nothing has yet happened to cause the "FOO" package to be created.
Christophe