Next: , Previous: , Up: Evaluation   [Contents][Index]


10.3 クォート

スペシャルフォームquoteは、単一の引数を記述されたままに評価せずにリターンします。これはプログラムに自己評価オブジェクトではない、定数シンボルや定数リストを含める方法を提供します(数字、文字列、ベクターのような自己評価オブジェクトをクォートする必要はない)。

Special Form: quote object

このスペシャルフォームはobjectを評価せずにリターンする。リターン値は共有されるかもしれないので変更しないこと。Self-Evaluating Formsを参照のこと。

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)の2つの式はいずれも(+ 1 2)とequalなリストを生成しますが前者はmutableリストを新たに作成するのにたいして、後者は共有される可能性のある変更すべきではないコンスから構築したリストを作成します。Self-Evaluating Formsを参照してください。

他のクォート構文としては、コンパイル用にLispで記述された無名のラムダ式の元となるfunction (Anonymous Functionsを参照)、リストを計算して置き換える際にリストの一部だけをクォートするために使用される‘`’(Backquoteを参照)があります。