Symbol Attributes
-----------------
All symbols have two basic attributes: print name and property list.
Most important is the "print name" of the symbol. This is a string
naming the symbol, after it has been defined (when the symbol is first
created) it may not be changed.
- Function: symbol-name symbol
This function returns the print name of the symbol SYMBOL.
(symbol-name 'unwind-protect)
=> "unwind-protect"
The symbol's "property list" (or plist) is similar to an alist
(Note:Association Lists), though stored differently, and provides a
method of storing arbitrary extra values in each symbol. Note:Property
Lists.
Although not strictly an attribute of the symbol, symbols also
provide a means of associating values with names (i.e. variables).
Within a defined context, a symbol may have a "binding", this binding
associates the symbol with a memory location within which a value may
be stored. When writing Lisp programs, the value of a symbol's current
binding is accessed by writing the print name of the symbol. Similarly
the binding may be modified by using the `setq' special form. Note:Variables.