Next: , Up: Forms   [Contents][Index]


9.2.1 Self-Evaluating Forms

自己評価フォーム(self-evaluating form)は、リストやシンボルではない、任意のフォームです。自己評価フォームは、フォーム自身を評価します。評価の結果は、評価されたのと同じオブジェクトです。したがって、数字の25は25に評価され、文字列"foo"は文字列"foo"に評価されます。同様に、ベクターの評価では、ベクターの要素の評価は起こりません — 内容が変更されずに同じベクターがreturnされます。

'123               ; 評価されずに表示される数字。
     ⇒ 123
123                ; 通常どおり評価され、同じものがreturnされる。
     ⇒ 123
(eval '123)        ; “手動”による評価 — 同じものがreturnされる。
     ⇒ 123
(eval (eval '123)) ; 2度評価しても何も変わらない。
     ⇒ 123

事項評価されるという事実による利点から、数字、文字、文字列、そしてベクターでさえ、Lispコード内で記述されるのは一般的です。しかし、入力構文がない型にたいしてこれを行なうのは極めて異例です。なぜなら、これらをテキスト的に記述する方法がないからです。Lispプログラムを使用して、これらの型を含むLisp式を構築するのは、可能です。以下は例です:

;; バッファーオブジェクトを含む式を構築する。
(setq print-exp (list 'print (current-buffer)))
     ⇒ (print #<buffer eval.texi>)
;; それを評価する。
(eval print-exp)
     -| #<buffer eval.texi>
     ⇒ #<buffer eval.texi>