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


> Is there a way to make COMPILER-LET work correctly short of requiring
> that interpreters do a macroexpansion prepass?  Right now, I can't use
> COMPILER-LET in portable code because some macroexpansions happen after
> the dynamic extent of the COMPILER-LET bindings has ended.

This issue once included a proposal called CLARIFY-STATUS-QUO, which
stated that COMPILER-LETs should be processed at the same time as macros
are expanded, but didn't require this to happen in a prepass.  You could 
still get into trouble by doing things like:

    (defvar *foo*)
    (compiler-let ((*foo* 'compiler-let-value))
        (let ((*foo*  'let-value))

SOME-MACRO might see different values of *FOO* in different implementations,
depending on whether the interpreter does macroexpansion in parallel with
evaluation or in a prepass.

This proposal was dropped because of lack of support.