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

Re: Special Form Question



	
    Date: Fri, 13 Dec 1985  11:03 EST
    From: "Scott E. Fahlman" <Fahlman@C.CS.CMU.EDU>
    To:   shebs%utah-orion@utah-cs.arpa (Stanley Shebs)
    Subject: Special Form Question
    In-Reply-To: Msg of 12 Dec 1985  21:36-EST from shebs%utah-orion at utah-cs.arpa (Stanley Shebs)
    Message-ID: <FAHLMAN.12166802750.BABYL@C.CS.CMU.EDU>
    
    
    You do come up with the most imaginative questions...
    
    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.
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?).
    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,
If this "strange object" is to be completely unspecified, then the
section of the defintion of special-form-p (pg. 91) that DOES specify
what this strange object "typically" is, should be made an
Implementation Note.
    or to stick it in a symbol-function slot of some symbol and then
    evaluate a form with that symbol as the Car.
    
    -- Scott
    
	      --------------------
		
	-- Nick