[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

defconstant, eval-when, etc.



The one thing which needs to be clearly specified is how the semantics
of "added to the compilation environment" differs from what might be
done by (eval-when (compile) ...).  If, for instance, defmacro does
not bash the runtime environment, then the user will have to use
eval-when if the macro needs to be usable via the interpreter during
the compilation.  Eval-when should do exactly that:  evaluate and bash
the runtime environment.  Always, without exception, no matter what
"added to the compilation environment" might mean.  My own experience
is that it is generally a loss for "added to the compilation
environment" to bash the runtime environment.  Extracting necessary
declarative information from files in order to do multi-file
compilation carefully is not actually that difficult, and we have some
tools for doing this.

(I bring this up because i was just shafted by this in a very big way
bootstrapping LSB up in a lisp implementation which shall remain
nameless.  Unfortunately the bootstrap procedure cannot use LSB
itself.)