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

Re: Issue: LOAD-TIME-EVAL (Version 8)



    Date: Wed, 1 Feb 89 19:06 EST
    From: Kent M Pitman <KMP@STONY-BROOK.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.

Agreed.

    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.

I still don't think it means anything.  For example, in your FOO example
the two calls to EVAL inside the list are top-level calls if FOO was called
 from something compiled, or non-top-level calls if FOO was called from
something interpreted.  Does the Lisp's interactive loop count as EVAL?
What if it's executing a LOAD command, or loading a user's lisp init file,
rather than evaluating a typed-in form?  I still don't think it means anything.