Symbol (programming): Difference between revisions

Content deleted Content added
No edit summary
No edit summary
Line 54:
A symbol in [[Lisp (programming language)|Lisp]] is unique in a [[namespace]] (or ''package'' in [[Common Lisp]]). Symbols can be tested for equality with the function EQ. Lisp programs can generate new symbols at runtime. When Lisp reads data that contains textual represented symbols, existing symbols are referenced. If a symbol is unknown, the Lisp reader creates a new symbol.
 
In Common Lisp, symbols have the following attributes: a name, a value, a function, a list of properties and a package.<ref>{{Cite web|url=http://www.lispworks.com/documentation/HyperSpec/Body/t_symbol.htm|title=CLHS: System Class SYMBOL|website=www.lispworks.com}}</ref>
 
In Common Lisp it is also possible that a symbol is not interned in a package. Such symbols can be printed, but when read back, a new symbol needs to be created. Since it is not ''interned'', the original symbol can not be retrieved from a package.
 
In Common Lisp symbols may use any characters, including whitespace, such as spaces and newlines. If a symbol contains a whitespace character, it needs to be written as |this is a symbol|. Symbols can be used as identifiers for any kind of named programming constructs: variables, functions, macros, classes, types, goto tags and more.
Symbols can be interned in a package.<ref>{{Cite web|url=http://www.lispworks.com/documentation/HyperSpec/Body/t_pkg.htm#package|title=CLHS: System Class PACKAGE|website=www.lispworks.com}}</ref> Keyword symbols are self-evaluating,<ref>[[Peter Norvig]]: ''Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp'', Morgan Kaufmann, 1991, {{ISBN|1-55860-191-0}}, [http://norvig.com/paip.html Web]</ref> and interned in the package named KEYWORD.
 
====Examples====