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

SIDE-EFFECT-FREE/STATELESS Functions



re: As I said in my earlier message, the Symbolics declarations do not
    attempt to keep track of aliasing.  Thus there is no distinction between
    side-effects that are known to be connected with a particular object,
    and side-effects in general.  Aliasing can be fairly difficult to
    track in Lisp, and even more so in a language extended with locatives
    (which allow non-type-specific operations to access aliases).

The issue of whether or not "CAR is sensitive to side-effects" doesn't involve
aliasing, or keeping track of particular objects.  It is related to the issue
of knowing whether or not a function's arguments fall into the class of non-
modifiable objects.  Numeric functions are in that class; and CAR, CDR, & etc.
aren't.  The relevant part of the message that you quoted in part from is:

    Date: Mon, 16 May 88 17:55:30 PDT
    From: Jon L White <edsel!jonl@labrea.stanford.edu>
    To: ELIOT@cs.umass.edu
    Cc: Common-Lisp@sail.stanford.edu
    Subject: SIDE-EFFECT-FREE/STATELESS Functions
    . . . 
    By contrast, the arguments to + cannot be modified by any CLtL function, 
    and this is presumably what LT:SIMPLE adds to LT:REDUCIBLE for Symbolics.
    [Remember my previous note about SETN in Interlisp?].  Unfortunately, 
    there aren't many read-only datatypes in Common Lisp.

CAR itself has no internal state, such as for example GET-UNIVERSAL-TIME has;
thus no outside events can affect the value of CAR when it is given a known 
datum.


-- JonL --