Next: Symbol Forms, Up: Forms [Contents][Index]
自己評価フォーム(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>