Next: Functional Programming, Previous: Variables, Up: Welcome to Lisp [Contents][Index]
In Common Lisp, the most general assignment operator is setf
. We can use it
to do assigments to either kind of variable:
> (setf *glob* 98) 98 > (let ((n 10)) (setf n 2) n) 2
When the first argument to setf
is a symbol tht is not the name of a local
variable, it is taken to be a global variable:
> (setf x (list ’a ’b ’c)) (A B C)
That is, you can create global variables implicitly, just by assigning them
values. In source files, it is better style to use explicit defparameters
.
You can do more than just assign values to variables. The first argument to
setf
can be an expression as well as a variable name. In such cases, the
value of the second argument is inserted in the place referred to be the
first:
> (setf (car x) ’n) N > x (N B C)
The first argument to setf
can be almost any expression that refers to a
particular place. All such operators are marked as “settable” in Appendix D.
You can give any (even) number of arguments to setf
. An expression of the
form:
(setf a b c d e f)
is equivalent to three separate calls to setf
in sequence.