From: Sam S. <sd...@gn...> - 2003-08-13 14:05:33
|
> * In message <200...@cl...> > * On the subject of "Re: EVAL at macroexpansion time - use *VENV* too?" > * Sent on Wed, 13 Aug 2003 12:37:50 +0200 > * Honorable Bruno Haible <br...@cl...> writes: > > Sam wrote: > > > trouble is that sometimes all these envs are not bound, so actually it > > would look like > > > > (defun make-macro-expander (macrodef &optional > > (env (vector (and (boundp '*venv*) *venv*) > > (and (boundp '*fenv*) *fenv*) > > (and (boundp '*benv*) *benv*) > > (and (boundp '*genv*) *genv*) > > (if (boundp '*denv*) *denv* > > SYSTEM::*TOPLEVEL-DENV*)))) > > (make-macro (eval-env (make-macro-expansion macrodef) env))) > > This looks so weird... If I were you I'd handle the cases 1), 2), 3) > separately, i.e. make this defun look like > > (defun make-macro-expander (macrodef env) ...) this is irrelevant. apparently somewhere in compiler.lisp we rely on the old - "global env only" - semantics resulting in the error I mentioned in the previous message. -- Sam Steingold (http://www.podval.org/~sds) running w2k <http://www.camera.org> <http://www.iris.org.il> <http://www.memri.org/> <http://www.mideasttruth.com/> <http://www.honestreporting.com> There's always free cheese in a mouse trap. |