There's another thing that really should be fixed, for the sake of
preserving our ability to change the implementation `local-eval' in the
future.

Since (the-environment) can be included in code compiled to disk, the
lexical environment objects that it returns are effectively now part of
our ABI.  As it is now, if we want to change the representation, we'll
be in for a lot of headaches to support lexical environments produced by
older code.

The fix is simple: Simply change the representation of the lexical
environment object to contain only a single field: a procedure that
takes an expression (and optional keyword arguments) and does the
equivalent of `local-eval' or `local-compile'.  (The keyword arguments
should specify whether or not to compile, and the compile options).

Then, `local-eval' and `local-compile', when applied to a lexical
environment object, should simply call the embedded procedure.

     Thanks,
       Mark

Reply via email to