[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Issue EVAL-WHEN-NON-TOP-LEVEL
- To: "Kim A. Barrett" <IIM@ECLA.USC.EDU>
- Subject: Re: Issue EVAL-WHEN-NON-TOP-LEVEL
- From: David N Gray <Gray@DSG.csc.ti.com>
- Date: Tue, 28 Feb 89 18:47:59 CST
- Cc: cl-compiler@SAIL.STANFORD.EDU
- In-reply-to: Msg of Tue 28 Feb 89 13:40:44-PST from Kim A. Barrett <IIM@ECLA.USC.EDU>
- Sender: GRAY@Kelvin.csc.ti.com
> > (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.