[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Special Form Question
- To: NGALL@BBNG.ARPA
- Subject: Re: Special Form Question
- From: "Scott E. Fahlman" <Fahlman@C.CS.CMU.EDU>
- Date: Sat, 14 Dec 1985 02:02:00 -0000
- Cc: common-lisp@SU-AI.ARPA
- In-reply-to: Msg of 13 Dec 1985 13:56-EST from NGALL@BBNG.ARPA
- Sender: FAHLMAN@C.CS.CMU.EDU
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.
Wrong. A CL symbol does not have a function as a "user-visible
component" (i.e., slot; cf. pg. 163). Since CLtL goes out of its way
to point this out, I think it is a good idea to not slip back into
definition by implementation (are any implementtations NOT using
function cells?).
All right, on page 163 it says that Symbol-function is not necessarily a
slot in the symbol object, but on page 90 it says that symbol-function
returns an object that "may be a function or may be an object
representing a special form or macro". However, it is an error if you
try to invoke an object of the latter kind as a function. I think that
this is consistent with the behavior I suggested, though I should not
have referred to Symbol-Function as fetching something from a slot.
If we decide to go with this description of the required behavior, some
wording on page 9 needs to be clarified. It says that a error IS
SIGNALLED if you do Symbol-Function on a symbol with no funciton
definition, but then seems to indicate that this error would not be
signalled if the definition is a macro or special form. Alternatively,
we could specify that the error is signalled unless the symbol defines a
function in the strict sense, but if we do that a lot of implementaitons
would have to be fixed in ways that might hurt efficiency.
-- Scott