Symbols in LISP
Symbols are lisp data objects and every type of symbol object has a name called its print name.
Symbol names may contain any combination of letters and numbers, plus some special characters such as hyphens. A symbol can contain any alphabetic, numeric, or any characters except delimiter characters like parenthesis or space.
Examples of symbols :
Banana age year-of-birth 123%$ /home/user/work b^2-a*c
Difference between integers and symbols:
A sequence of numbers from 0 to 9.
eg: +7 and 7 are integers.
A sequence of letters, digits and, other permissible characters.
eg: + , – , * are all symbols .
Special symbols T and NIL:
- T : Truth, ” yes “
- NIL : False, “no”
Certain lisp functions called predicates answer questions with T and NIL.
Note: abcDEf ABCDEF ABCdef Are all the same symbol. Lisp reader converts lowercase letters to corresponding uppercase letters while reading symbols so case makes no difference while notating a symbol
Some common lisp conventions :
If there are problems in notating a symbol due to lowercase letters or special characters in its name there are escape conventions.
- Writing a ‘/’ character before any character causes the character to be treated itself as an ordinary character for use in a symbol name; in particular, it suppresses the internal conversion of lowercase letters to uppercase.
5.6789/p0 : 5.6789p0 is 1 symbol. 5.6789/P0 : 5.6789P0 is another symbol.
- Surrounding name of the symbol in the vertical bar.
|h^2 - 2gt| : h^2 - 2gt is a symbol . (As visible dilimiter like spaces can also be used in the symbol name by surrounding it within ||.)
Properties of Symbols:
In lisp, properties can be assigned to symbols.
For example : The symbol dog can have properties like colour , weight , breed.
This is done with the help of a property list or plist. In Lisp, every symbol has a property list (plist). When a symbol is created initially its property list is empty. A property list consists of entries where every entry consists of a key called an indicator and a value. There are no duplicates among the indicators.
Some common functions related to the property list:
|get function||get symbol indicator &optional default||get searches the plist for an indicator equivalent to indicator. If the found value is returned or else the default is returned. If the default is not specified nil is returned|
|setf function||setf((get function) value)||The setf is used with get to create a new indicator value pair.|
|symbol-plist||(symbol-plist symbol)||The symbol-plist allows you to see all the properties of a symbol|
|remprop||remprop symbol indicator||The remprop function is used to remove the property equivalent to the indicator.|
ANNA (SIBLING ANNA AGE 20)
In the above example, hritik is a symbol and age, siblings are properties(indicators) assigned to it having values 20 and Anna.
(BREED DALMATIAN NAME TOM) (NAME TOM)
In the above example the property breed of symbol dog is removed using the remprop function.