status: final (2000-07-24)
keywords: Assignment
library name: generalized-set!
This is a proposal to allow procedure calls
that evaluate to the "value of a location" to be used to set the
value of the location, when used as the first operand of
set!
.For example:
(set! (car x) (car y))becomes equivalent to
(set-car! x (car y))
Many programming languages have the concept of
an lvalue. that is an "expression" that "evaluates" to a location,
and which can appear on the left-hand-side of an assignment. Common Lisp
has a related concept of "generalized variables" which can be used in
setf
and some other special forms. However, the Common Lisp
concept is based on the idea of compile-time recognition of special
"location-producing" functions; this does not seem to be in the "spirit
of Scheme".
This SRFI proposes an extension of
set!
so that it provides similar functionality as Common
Lisp's setf
, except that the updater is associated with a
procedure value, rather than a name.