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

Re: MacLISP name compatibility, and return values of update functions



We had a long discussion about SETF here at Utah for our implementation and
decided that RPLACA and RPLACD are really the wrong things to use for this.
Every other SETF-type function returns (depending on how you look at it)
the value of the RHS of the assignment (the second argument) or the updated
value of the LHS (the first argument).  This has been the case in most
languages where the value of an assignment is defined, for variables, array
elements or structure elements.  The correct thing to use for
(SETF (CAR X) Y)
is
(PROGN (RPLACA X Y) (CAR X))
or the equivalent.  It appears that the value of SETF was undefined in
LISPM just because of this one case.  Perhaps it is just more apparent when
one uses Algol syntax, i.e.  CAR(X) := CDR(Y) := Z; that this is the
obvious way to define the value of SETF.
-------