Common Lisp the Language, 2nd Edition

Next: The Property List Up: Common Lisp the Language Previous: Type Declaration for

# 10. Symbols

A Lisp symbol is a data object that has three user-visible components:

- The property list is a list that effectively provides each symbol with many modifiable named components.

- The print name must be a string, which is the sequence of characters used to identify the symbol. Symbols are of great use because a symbol can be located once its name is given (typed, say, on a keyboard). One may ordinarily not alter a symbol's print name.

X3J13 voted in March 1989 (CHARACTER-PROPOSAL) to specify it is an error to alter a print name.

- The package cell must refer to a package object. A package is a data structure used to locate a symbol once given the symbol's name. A symbol is uniquely identified by its name only when considered relative to a package. A symbol may appear in many packages, but it can be owned by at most one package. The package cell points to the owner, if any. Package cells are discussed along with packages in chapter 11.

A symbol may actually have other components for use by the implementation. One of the more important uses of symbols is as names for program variables; it is frequently desirable for the implementor to use certain components of a symbol to implement the semantics of variables. See `symbol-value` and `symbol-function`. However, there are several possible implementation strategies, and so such possible components are not described here.

- The Property List
- The Print Name
- Creating Symbols

Next: The Property List Up: Common Lisp the Language Previous: Type Declaration for