[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
issue LOAD-TIME-EVAL, version 7
- To: sandra%defun@cs.utah.edu
- Subject: issue LOAD-TIME-EVAL, version 7
- From: Kent M Pitman <KMP@STONY-BROOK.SCRC.Symbolics.COM>
- Date: Fri, 23 Dec 88 15:15 EST
- Cc: cl-compiler@sail.stanford.edu
- In-reply-to: <8810171902.AA22253@defun.utah.edu>
I'm not yet ready to offer this version my stamp of approval, but I do
have a list of comments which if addressed would probably lead me to be
happy with it...
* I'm not sure I agree that semantic processing (macro expansion) of
LOAD-TIME-VALUE's argument should be deferred to run time.
Doing so forces macro libraries to be available which might otherwise
not have to be available.
It also means that loading will be incrementally slower, and may
do intermediate consing due to macroexpansion that could be avoided.
Anyway, if we make semantic processing occur in the compiler
environment, someone who really wants to can still defer it to runtime
by simply replacing things like
(LOAD-TIME-VALUE (MY-MACRO))
with
(LOAD-TIME-VALUE (EVAL '(MY-MACRO)))
As such, I think we should change this to say that full macroexpansion
is done at compile time.
* The sentence
It is not permissible to "collapse" either multiple
references to the same (EQ) LOAD-TIME-VALUE expression, or EQUAL
expressions.
is too confusing. Are the EQ expressions referred to source expressions,
and the EQUAL expressions results? Break this out into its own paragraph,
expand to clarify, and offer examples.
* Although I'm willing to take multiple evaluation in the interpreter
as a compromise position, I would like it mentioned in the discussion
that this was only an expedient to getting this issue accepted at all,
and that I'm not really happy about it. I have said that I think a
number of our lingering problems (with EVAL-WHEN, COMPILER-LET, and
this -- for example) are due to the presence of interpreters which do
not do a semantic-prepass at a known time. If I had my way, we would
require a semantic pre-pass and we would then be able to forbid
multiple evaluations even in the interpreter.
* Please change "is an important feature to include" in the first
paragraph of the discussion to "is an essential feature to include".
Believe it or not, I don't think just "important" is strong enough
here. Thanks.
* In cost to implementors, it says
In compiled code, (LOAD-TIME-VALUE <form>) is equivalent to '#,<form>...
but it should probably only say "most equivalent" or "very similar",
and then go on to highlight the issue of non-read-only-ness which #,
does not currently acknowledge.