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

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



> > (2) The primary reason that person 1 used EVAL-WHEN was that they wanted it
> > to happen at compile time; considerations of top-level-ness is a secondary
> > detail.  Person 2 also wants it to happen at compile time.  So this appears
> > to be a case of two rights make a wrong. 
> 
> Consider the case of a DEFMACRO, which expands into an EVAL-WHEN COMPILE to
> record the expander in the remote environment and a form which calls SETF of
> MACRO-FUNCTION when the file is loaded.  If you wrap an EVAL-WHEN COMPILE
> around this, there is probably no point in recording the expander in the remote
> environment, since it is about to be defined in the local environment.

Ah, good point.  Now I understand why top-level-ness is relevant.  
I think this discussion illustrates how confusingly vague the meaning of
the current COMPILE situation is.  If we replaced it with situations
such as :COMPILE-TOP-LEVEL and :COMPILE-ALWAYS, then it would become
much more obvious what is happening and why.  I guess the intent was to
define COMPILE to mean compile-time-if-top-level, but if I'm still
confused by it, then other programmers probably will be too.