[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: issue LOAD-TIME-EVAL
- To: sandra <@cs.utah.edu:sandra@defun>
- Subject: Re: issue LOAD-TIME-EVAL
- From: Jeff Dalton <jeff%aiai.edinburgh.ac.uk@NSS.Cs.Ucl.AC.UK>
- Date: Tue, 10 Jan 89 23:14:10 GMT
- Cc: cl-compiler@sail.stanford.edu
- In-reply-to: Sandra J Loosemore's message of Mon, 9 Jan 89 19:22:31 MST
> > Date: Tue, 10 Jan 89 00:20:32 GMT
> > From: Jeff Dalton <jeff%aiai.edinburgh.ac.uk@NSS.Cs.Ucl.AC.UK>
> >
> > > In interpreted code, (LOAD-TIME-VALUE <form>) is equivalent to (VALUES
> > > (EVAL (QUOTE <form>))).
> >
> > Surely not, [... mistaken comment ...]
>
> Perhaps I can rephrase this. I seem to remember having tried once
> before but apparently things got even more messed up in the process.
> The idea is that evaluation takes place in a null lexical environment,
> that it's performed by EVAL, and that exactly one value is returned.
I was confused. Quoting forms is ok (even, I now thing, self-evaluating
ones).
> > > Note that, in interpreted code, [...] Since successive evaluations
> > > of the same LOAD-TIME-VALUE expression may or may not result in an
> > > evaluation which returns a "fresh" object, destructive side-effects
> > > to the resulting object may or may not persist from one evaluation
> > > to the next.
> >
> > This sort of defeates the purpose of :READ-ONLY-P NIL.
>
> I'm not sure exactly what problem you have here. :READ-ONLY-P NIL
> says that it's OK to bash the object destructively, which is sometimes
> useful even if such destructive side-effects are not persistent.
That's probably why I said "sort of". It makes it noticeably less
useful and (more important) different from what happens in compiled
code. But you're right that it's still useful.
> > I don't understand what this explicit initialization is or why it helps.
>
> OK, here's an example.
Ah, I see. It helps because the programmer might have thought there
would be a new object each time. It doesn't help when the same object
is what's wanted, which is the case I was thinking of.
I guess what bothers me still is that the benefits of compilation
turn out to be somewhat strange. The programmer wants to write code
that will work if there's a new object each time but can still benefit
if there isn't.
> A previous paragraph says that it's OK to evaluate LOAD-TIME-VALUE forms
> only once. This is to clarify what "only once" means -- once per
> reference.
OK.
> > You might cite reasons, even if only by a phrase or two. (I'm never
> > happy when all I'm told is that "some people think it's essential".)
>
> That particular phrase is Kent's. I've long ago given up on trying to
> read Kent's mind :-), so he'll have to provide his own explanation.
I think there's some mail, but I'm having trouble finding the one
I want.
-- Jeff