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.