[comp.lang.scheme] #, redux

jonl@lucid.COM (Jon L White) (03/08/91)

In a message dated 1 Mar 91 09:21:27 EDT,  gjc@mitech.com mentions
the difficulty that #, poses for writing READ and EVAL using only
Common Lisp primitives.  

In fact, "#," is ill-conceived since it tried to do at read time what can 
only be done correctly at code processing time (e.g., file-compilation is 
one sort of processing, EVALing is another; and a compiler with a resident
interpreter could actually perform _both_ operations on the same piece of
input data.)  For this and related reasons, the X3J13 committee dropped 
it from the impending ANSI Common Lisp proposal, and in its place added a 
new special form LOAD-TIME-VALUE.  This may still not completely cover the
needs of the "home grown" EVAL -- but the trouble now, at least, is simply 
in not  exposing the file compiler's dependencies here; at least this time 
it's not due to a completely broken concept.

In fact, PDP10 MacLisp had a progenitor of this special form -- called 
SQUID for "Self-Quoting, Internal Datum" -- in the early 1970's.  It was 
in the late 1970's, after the introduction of the # reader macro, that 
someone must have thought that "squids" could be reduced to a simple 
variation on QUOTE.  Looks like it took nearly 10 years, however, to 
find and fix the difficulty with that approach.


-- JonL --