特殊形式 quote
は、単一の引数を評価することなく、記述されたまま返します。これにより、自己評価オブジェクトではない定数シンボルやリストをプログラムに組み込むことができます。(数値、文字列、ベクトルなどの自己評価オブジェクトをクォートする必要はありません。)
プログラムでは quote が頻繁に使用されるため、Lisp
ではこれに便利なリード構文が用意されています。アポストロフィ文字(‘'’)に続いて Lisp オブジェクト(リード構文で)を指定すると、第1要素が quote、第2要素がそのオブジェクトとなるリストに展開されます。したがって、リード構文 'x は (quote x) の略記となります。
quote を使用した表現の例をいくつか挙げます。
(quote (+ 1 2))
⇒ (+ 1 2)
(quote foo)
⇒ foo
'foo
⇒ foo
''foo
⇒ 'foo
'(quote foo)
⇒ 'foo
['foo]
⇒ ['foo]
式 (list '+ 1 2) と '(+ 1
2) はいずれも (+ 1 2)
と等しいリストを生成しますが、前者は新たに生成された可変リストを返すのに対し、後者は共有される可能性があり変更すべきではないコンスから構築されたリストを返します。自己評価形式を参照してください。
その他のクォート構文には、Lispで記述された無名ラムダ式をコンパイルさせるfunction(無名関数を参照)や、リストの一部のみをクォートし、他の部分は計算して置換するために用いられる‘`’(バッククォートを参照)などがあります。