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

compiler-let



I agree with much of what's been said.  I'd just like to add that the
really bogus thing is that compiler-let is defined in terms of "the
interpreter does this, the compiler does that", in a language where the
whole point is that they do the same thing.  The definition should be in
terms of the actual semantics of the language, without reference to the
interpreter or compiler.  Of course, that's hard, but it would also
point up some of the same problems that we've been discussing.  I also
agree that the name is terrible.  If everything important that it does
can be done just as well with macrolet, then perhaps simply removing
compiler-let is the right thing to do.

Historical note: the first edition Lisp Machine Manual [Weinreb and Moon
1978] lists this form, and explains it primarily as a way to control
compiler-directive flags (which is really bogus for CL), and secondarily
to bind flags that affect macro expansion.  This survived into the later
editions of the manual.  So I certainly take some blame for this mess.
The Symbolics documentation has been improved a lot by someone, and
while it retains the old compiler-flag stuff, it also includes a good
example of what compiler-let is really for.  Interestingly, it then
shows how to do the same thing with macrolet!