On Thu, Oct 10, 2002 at 04:58:47PM +0100, Christophe Rhodes wrote:
> On Wed, Oct 09, 2002 at 07:04:33PM +0100, Christophe Rhodes wrote:
> > (defmacro defmacro-mundanely (name lambda-list &body body)
> > `(eval-when (:load-toplevel :execute)
> > (defmacro ,name ,lambda-list ,@body)))
> This one's still baffling me... changing the DEFMACRO to SB!XC:DEFMACRO
> gets you to make-host-2, when, while compiling src/compiler/assem.lisp,
> it complains that #S(SB!KERNEL:LEXENV ...) is not a (OR NULL C::LEXENV)
> [ compiling with CMUCL ].
Even just considering (and then thinking better of:-) thinking about
how UNCROSS either ought to operate, or does in practice operate, on
that outer EVAL-WHEN wrapped around the EVAL-WHEN which appears in the
expansion of DEFMACRO makes my head swim. Especially since IIRC even
in ordinary ANSI CL (without cross-compilation UNCROSS issues) the
behavior of nested EVAL-WHENs can be nonintuitive.
But using LET instead (to strip off the toplevelness of the
expression) dodges this confusion and works in 0.7.8.25.
William Harold Newman <william.newman@...>
overlooking factors of two in offsets and factors of three in
performance since 1982
PGP key fingerprint 85 CE 1C BA 79 8D 51 8C B9 25 FB EE E0 C3 E5 7C