Go to the first, previous, next, last section, table of contents.

Self-Evaluatingフォーム

リストやシンボル(i.e., 数値、文字、ストリング、ベクトル、バッファ等) でない(全 ての)フォームは評価されるとその内部表現になります。 empty リスト `()' の場合は 特別で、これは評価されるとシンボル nil になります。

以下の例では、quote を用い (評価せずに)読み込んだフォームを、明示的に評価する のに eval を用いています。セクション 3.1 [eval]、ページ 23 とセクション 3.3 [quote]、ページ 30 参照。

      123
      => 123
      (eval '123)
      => 123
      (eval (eval '123))
      => 123
      (eval '[1 2 3])
      => [1 2 3]

Lisp が初めての人は、このサブセクションの残りの部分はスキップして下さい。数 値、文字、ストリング、そして(時には)ベクトルは、それらを Lisp コードに含むこと で(普通に)評価は行なえますが、その他の Lisp オブジェクトは、それらを評価するこ とはできますが、めったに評価が行なわれることはありません。例えばバッファは read シンタックスを持たないため、それを評価する唯一の方法はバッファに対する参 照を持つフォームを作りそのフォームを評価することになります。

      (setq buf (list 'print (current-buffer)))   ; バッファを中に持つリストを作る
           => (print #<buffer evaluation.texinfo>)
      (eval buf)
           -> #<buffer evaluation.texinfo>
           => #<buffer evaluation.texinfo>
      (eval (eval buf))
           -> #<buffer evaluation.texinfo>
           => #<buffer evaluation.texinfo>

Go to the first, previous, next, last section, table of contents.