[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- To: Moon@stony-brook.scrc.symbolics.com
- Subject: SIDE-EFFECT-FREE/STATELESS Functions
- From: Jon L White <email@example.com>
- Date: Sat, 28 May 88 20:26:21 PDT
- Cc: firstname.lastname@example.org
- In-reply-to: David A. Moon's message of Tue, 24 May 88 17:08 EDT
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 <email@example.com>
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
-- JonL --