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


Well, it looks like after all of the debate on this issue we are
pretty much back where we started with KMP's original
LOAD-TIME-EVAL:NEW-SPECIAL-FORM proposal, except with a possible
change of name from LOAD-TIME-CONSTANT to LOAD-TIME-VALUE.  (A while
back somebody else suggested calling it UNVARYING, btw.)

We still have not addressed the issue I raised some time ago.  The
proposal guarantees that each LOAD-TIME-CONSTANT "expression" is
evaluated only once.  What equality predicate is used to compare them?
Does "expression" refer to the entire LOAD-TIME-CONSTANT form or the
expression within it to be evaluated (neither of which are guaranteed
to be unique)?  I think it would help clarify things if we suggested
an implementation technique to be used in the interpreter.

Finally, how important is it that evaluation take place exactly once
in the interpreter?  Other kinds of preprocessing transformations,
notably macro expansion, are allowed to happen repeatedly in
interpreted code but compilation guarantees that no further
transformations will be performed on that piece of code.  I think it
would certainly make the language spec cleaner if we could treat this
construct in the same way, instead of having to make yet another
exception for it.