1.1 Data Types
Applicative Common Lisp is constructed from the following data types:
Any | = | Atom | ||
| | (cons Any Any) | |||
Atom | = | Symbol | ||
| | String | |||
| | Character | |||
| | Number | |||
Symbol | = | (quoteA) | ||
| | (quoteAB) | |||
| | (quoteABC) | |||
| | ... | |||
String | = | "a" | ||
| | "ab" | |||
| | "abc" | |||
| | ... | |||
Character | = | #\a | ||
| | #\b | |||
| | #\c | |||
| | ... | |||
Number | = | Rational | ||
| | (complex Rational Rational) | |||
Rational | = | 0 | ||
| | 1 | |||
| | -1 | |||
| | 1/2 | |||
| | -1/2 | |||
| | ... |
All values are immutable, and any values constructed identically are indistinguishable (e.g. copying a list does not yield a "different" list). By convention, booleans and lists are encoded as follows:
Boolean | = | (quoteT) | ||
| | (quoteNIL) | |||
List | = | (quoteNIL) | ||
| | (cons Any List) |