GNU Info

Info Node: (cl)Generalized Variables

(cl)Generalized Variables


Next: Variable Bindings Prev: Assignment Up: Control Structure
Enter node , (file) or (file)node

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.

Basic Setf
`setf' and place forms
Modify Macros
`incf', `push', `rotatef', `letf', `callf', etc.
Customizing Setf
`define-modify-macro', `defsetf', `define-setf-method'

automatically generated by info2www version 1.2.2.9