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 --