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.