Common Lisp the Language, 2nd Edition
Next: Data Types
Up: Notational Conventions
Previous: The Lisp Reader
Certain characters are used in special ways in the syntax of Common Lisp.
The complete syntax is explained in detail in chapter 22,
but a quick summary here may be useful:
- (
-
A left parenthesis begins a list of items. The list may
contain any number of items, including zero. Lists may be nested.
For example, (cons (car x) (cdr y)) is a list of three things,
of which the last two are themselves lists.
- )
- A right parenthesis ends a list of items.
- '
- An acute accent (also called single
quote or apostrophe) followed by an expression form
is an abbreviation for (quote form). Thus 'foo means
(quote foo) and '(cons 'a 'b) means (quote (cons (quote a) (quote b))).
- ;
- Semicolon is the comment character. It and all
characters up to the end of the line are discarded.
- "
- Double quotes surround character strings:
"This is a thirty-nine-character string."
- \
- Backslash is an escape character.
It causes the next character to be treated as a letter rather than for its usual
syntactic purpose. For example, A\(B denotes a symbol whose
name consists of the three characters A, (, and B. Similarly,
"\"" denotes a character string containing one character, a
double quote, because the first and third double quotes serve to delimit the
string, and the second double quote serves as the contents of the string. The
backslash causes the second double quote to be taken literally and prevents it
from being interpreted as the terminating delimiter of the string.
- |
- Vertical bars are used in pairs
to surround the name (or part of the name) of a symbol that has
many special characters in it. It is roughly equivalent to putting a
backslash in front of every character so surrounded. For example,
|A(B)|, A|(|B|)|, and A\(B\) all mean the symbol whose name
consists of the four characters A, (, B, and ).
- #
- The number sign signals the beginning of a
complicated syntactic structure.
The next character designates the precise syntax to follow.
For example, #o105 means (105 in octal notation);
#x105 means (105 in hexadecimal notation);
#b1011 means (1011 in binary notation);
#\L denotes a character object for the character L; and
#(a b c) denotes a vector of three elements a, b, and c.
A particularly important case is that #'fn means (function fn),
in a manner analogous to 'form meaning (quote form).
- `
- Grave accent (``backquote'') signals that
the next expression is a template that may contain commas. The backquote syntax
represents a program that will construct a data structure
according to the template.
- ,
- Commas are used within the backquote syntax.
- :
- Colon is used to indicate which package a
symbol belongs to. For example, network:reset denotes the symbol named
reset in the package named network. A leading colon indicates a keyword, a symbol that always evaluates to itself.
The colon character is not actually part of the print name
of the symbol.
This is all explained in chapter 11; until you read
that, just keep in mind that a symbol notated with a leading colon
is in effect a constant that evaluates to itself.
Notice of correction.
In the first edition, the characters ``,'' and ``:'' at the
left margin above were inadvertently omitted.
Brackets, braces, question mark, and exclamation point
(that is, [, ], {, },
?, and !) are not used for any purpose in standard Common Lisp syntax.
These characters are explicitly reserved to the user, primarily
for use as macro characters for user-defined lexical syntax extensions
(see section 22.1.3).
All code in this book is written using lowercase letters.
Common Lisp is generally insensitive to the case in which code
is written. Internally, names of symbols are ordinarily
converted to and stored in uppercase form.
There are ways to force case conversion on output if desired;
see *print-case*.
In this book, wherever an interactive exchange between a user
and the Lisp system is shown, the input is exhibited with lowercase
letters and the output with uppercase letters.
X3J13 voted in June 1989 (READ-CASE-SENSITIVITY) to introduce
readtable-case. Certain settings allow the names of symbols
to be case-sensitive. The default behavior, however, is as described
in the previous paragraph. In any event, only uppercase letters
appear in the internal print names of symbols naming the
standard Common Lisp facilities described in this book.
Next: Data Types
Up: Notational Conventions
Previous: The Lisp Reader
AI.Repository@cs.cmu.edu