[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Issue: LOAD-TIME-EVAL (Version 8)
- To: Moon@STONY-BROOK.SCRC.Symbolics.COM
- Subject: Re: Issue: LOAD-TIME-EVAL (Version 8)
- From: Kent M Pitman <KMP@STONY-BROOK.SCRC.Symbolics.COM>
- Date: Wed, 1 Feb 89 19:06 EST
- Cc: firstname.lastname@example.org, Gray@DSG.csc.ti.com, KMP@STONY-BROOK.SCRC.Symbolics.COM, CL-Compiler@SAIL.STANFORD.EDU
- In-reply-to: <19890201235118.1.MOON@EUPHRATES.SCRC.Symbolics.COM>
I may have more to say on this later, but for now...
Date: Wed, 1 Feb 89 18:51 EST
From: David A. Moon <Moon@STONY-BROOK.SCRC.Symbolics.COM>
If two lists (LOAD-TIME-VALUE <form>) are EQUAL but not EQ, their
values always come from distinct evaluations of <form>. Coalescing
of these forms is not permitted.
But since compilers can coalesce the constant structure in forms like
(DEFUN FOO ()
(LIST (EVAL '(LOAD-TIME-VALUE (BAR)))
(EVAL '(LOAD-TIME-VALUE (BAR)))))
then distinct forms may sometimes ultimatley get coalesced anyway, so
this may look more re-assuring than it really is.
Btw, Sandra's references to "calls to EVAL" meant toplevel calls. After
all, users can't tell if EVAL is implemented recursively, or if some
internal function is used to do the recursion. The only time they ever
come in contact with the recursive nature is when they use EVALHOOK, and
there it is not EVAL, but EVALHOOK which accomplishes the recursion.