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.
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 (see Association Lists), though stored differently, and provides a method of storing arbitrary extra values in each symbol. See 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.