Subject: Re: fun with eval-when and compile-file
From: rpw3@rpw3.org (Rob Warnock)
Date: Thu, 09 Jan 2003 05:26:34 -0600
Newsgroups: comp.lang.lisp
Message-ID: <ZKycnaJfXaz3wYCjXTWc3g@giganews.com>
Steven M. Haflich <smh_no_spiced_ham@alum.mit.edu> 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

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