[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Special Form Question
- To: Scott E. Fahlman <Fahlman@C.CS.CMU.EDU>
- Subject: Special Form Question
- From: David A. Moon <Moon@SCRC-STONY-BROOK.ARPA>
- Date: Fri, 13 Dec 85 13:17 EST
- Cc: common-lisp@SU-AI.ARPA
- In-reply-to: <FAHLMAN.12166802750.BABYL@C.CS.CMU.EDU>
Date: Fri, 13 Dec 1985 11:03 EST
From: "Scott E. Fahlman" <Fahlman@C.CS.CMU.EDU>
We clearly do not require that
(setf (symbol-function 'foo) (symbol-function 'quote))
somehow makes foo act like quote. Nor do we explicitly require this to
signal an error. The case that you describe is so perverse that I do
not think it is worthwhile for those implementations that use something
like internal FEXPRs in the interpreter to bother checking that they are
being called in a legitimate way.
I think the best position to take is the following: Symbols that name
special forms do have symbol-function slots, just like any other symbol.
The implementation is allowed, but not required, to put some strange
object in that slot, and we cannot prevent users from getting their
hands on this object if it exists. However, the nature of this object,
if it exists, is completely unspecified and users cannot count on doing
anything useful with it. It is an error to funcall or apply this thing,
or to stick it in a symbol-function slot of some symbol and then
evaluate a form with that symbol as the Car.
I agree. I'd like to propose a clarification about macros. If a symbol is
the name of a macro, then symbol-function returns an unspecified object that
it is an error to funcall or apply, however sticking that object into the
symbol-function slot of another symbol does make that other symbol name the
same macro. The alternative would be to say that it's just as illegal for
macros as for special forms.