The special form quote
returns its single argument, as written,
without evaluating it. This provides a way to include constant symbols
and lists, which are not self-evaluating objects, in a program. (It is
not necessary to quote self-evaluating objects such as numbers, strings,
and vectors.)
This special form returns object, without evaluating it. The returned value might be shared and should not be modified. See Self-Evaluating Forms.
Because quote
is used so often in programs, Lisp provides a
convenient read syntax for it. An apostrophe character (‘'’)
followed by a Lisp object (in read syntax) expands to a list whose first
element is quote
, and whose second element is the object. Thus,
the read syntax 'x
is an abbreviation for (quote x)
.
Here are some examples of expressions that use quote
:
(quote (+ 1 2)) ⇒ (+ 1 2)
(quote foo) ⇒ foo
'foo ⇒ foo
''foo ⇒ 'foo
'(quote foo) ⇒ 'foo
['foo] ⇒ ['foo]
Although the expressions (list '+ 1 2)
and '(+ 1 2)
both yield lists equal to (+ 1 2)
, the former yields a
freshly-minted mutable list whereas the latter yields a list
built from conses that might be shared and should not be modified.
See Self-Evaluating Forms.
Other quoting constructs include function
(see Anonymous Functions), which causes an anonymous lambda expression written in Lisp
to be compiled, and ‘`’ (see Backquote), which is used to quote
only part of a list, while computing and substituting other parts.