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