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

issue LOAD-TIME-EVAL, version 7



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.