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

Re: Issue EVAL-WHEN-NON-TOP-LEVEL, v2



To simplify your example somewhat, you have something like

    (eval-when (eval compile)
        (eval-when (compile load eval)
	    (some-action)))

Your claim is that this still causes (SOME-ACTION) to be performed at
load-time, right?  I think you're confused here; unless I'm really
confused myself, neither the definition of EVAL-WHEN in CLtL nor the
definition in the current proposal supports this claim.

According to CLtL p. 70, since the situation COMPILE is specified for
the outer EVAL-WHEN, its body will be evaluated at compile time.  But
since the LOAD situation is not specified, the compiler will not
produce any code which causes the body to be evaluated at load time.
When the inner EVAL-WHEN is evaluated at compile time (presumably
using EVAL, although CLtL doesn't say this), it won't produce any code
causing a load-time action even though the LOAD situation is
specified, because it is the interpreter which is doing the processing
at that point, and the interpeter only pays attention to the EVAL
situation.

This aspect of the semantics of EVAL-WHEN is not changed by the current
proposal.

-Sandra
-------