Common Lisp Extensions. Node: Generalized Variables Assignment
Control Structure
Variable Bindings

## 5.2: Generalized Variables

A ``generalized variable'' or ``place form'' is one of the many places
in Lisp memory where values can be stored. The simplest place form is
a regular Lisp variable. But the cars and cdrs of lists, elements
of arrays, properties of symbols, and many other locations are also
places where Lisp values are stored.

The `setf`

form is like `setq`

, except that it accepts
arbitrary place forms on the left side rather than just
symbols. For example, `(setf (car a) b)`

sets the car of
`a`

to `b`

, doing the same operation as `(setcar a b)`

but without having to remember two separate functions for setting
and accessing every type of place.

Generalized variables are analogous to ``lvalues'' in the C
language, where ``x = a[i]`

' gets an element from an array
and ``a[i] = x`

' stores an element using the same notation.
Just as certain forms like `a[i]`

can be lvalues in C, there
is a set of forms that can be generalized variables in Lisp.

Assignment
Control Structure
Variable Bindings