Subject: Re: fun with eval-when and compile-file
From: (Rob Warnock)
Date: Thu, 09 Jan 2003 05:26:34 -0600
Newsgroups: comp.lang.lisp
Message-ID: <>
Steven M. Haflich <> wrote:
| One of the brilliant language-simplification moves of the X3J13
| compiler subcommittee was to recommend that the language remove
| any compile-file-top-level special behavior from all CL _functions_.
| The necessary semantics of defmumble defining macros would be
| implemented by expansion into transparent eval-when forms, and
| (I recollect this was the only such case) in-package was changed
| from a function into a macro.

Thanks! After reading your comment, I also found it quite
helpful to pass the following forms through CMUCL & CLISP:

	(macroexpand '(defmacro foo (x) `(+ ,x 1)))
	(macroexpand '(in-package "foo"))

"Very interesting..."

| Now for the simple, general rule: "No CL function operators have any
| irregular interpretation by the file compiler at top-level."  That's
| why the eval-when is necessary, to give the call to the require function
| its special behavior at compile time.

Thanks again.


Rob Warnock, PP-ASEL-IA		<>
627 26th Avenue			<URL:>
San Mateo, CA 94403		(650)572-2607