Christophe Rhodes csr21@cantab.net writes:
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.
Unless you are using CLISP, which has the "interesting" non-ANSI behavior of special treatment of the REQUIRE function during compilation.
http://www.clisp.org/impnotes.html#lib-files
That's not coming into play here, just wanted to note it in case someone encounters it in the future.
Zach