[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: CLOS defining macros & compilation
> Date: Thu, 23 Feb 89 17:42:47 CST
> From: David N Gray <Gray@DSG.csc.ti.com>
> > The descriptions of the expansions of the DEFCLASS, DEFMETHOD, and
> > DEFGENERIC macros in the meta-object protocol document assume that
> > lexical environment objects received with &ENVIRONMENT have indefinite
> > extent.
> Not really, unless you've noticed something I missed. Some objects in
> the environment (class definitions in particular) have an extent
> corresponding to the duration of the invocation of COMPILE-FILE, but the
> environment objects themselves, as received by a macro, do not need to
> be used outside the extent of that macro invocation.
We all seem to be converging on the idea that compile-time
side-effects from macros should be handled by having the macro expand
into an (EVAL-WHEN (COMPILE) ...). The MOP document specifies that
the environment object be passed as an argument to calls to FIND-CLASS
(or whatever) that happen as a compile-time side-effect. This implies
that the environment object would have to appear as a quoted constant
in the macro expansion. The proposal to give macro environment
objects dynamic scope would give them dynamic scope *within the macro
function*, which means it would not be legitimate for them to appear
at all in the expansion returned from the macro.