1.1.3 Evaluating Combinations #2

(続き)

次に

1. 結合の副次式 (subexpression) を評価する

を繰り返すときの応用について考えてみる。
→結合を評価するのではなく、プリミティブな式(e.g. 数字、ビルトイン演算子, その他の名前)を評価する場合について。

  • 数字の「値」は名付けられた数である(※ちょっとこの訳の部分は下手な訳。意味はわかるんだけど)
  • ビルトイン演算子の「値」は対応する複数の操作を実行する計算機の命令シーケンスである
  • その他の名前の「値」は、当該環境においてそれらの名前と結びつけられるオブジェクトである

上記第二のルールは第三の特別なケースであると見なせる。 "+" や "*" のようなシンボルも大域環境(grobal environment)に含まれる。そして、その「値」であるところの計算機命令のシーケンスに結びつけられる。

注意すべきキーポイントは、式の中のシンボルの意味の決定における環境の役割である。
Lispのようなインタラクティブな言語では、(+ x 1) のような式を x や、+ といったシンボルでさえも、その環境について、いかなる情報の意味付けも無いまま語るのは、全くの無意味である。

(第3章でコンテキストを生成する一般的な環境の記法について知ることになる。プログラムの実行についての我々の理解で重要な役割を担うであろう)

【注意】
評価規則は定義の扱いについては与えられていない。例えば、(define x 3) を評価する事は define に二つの引数を適用することではない。define の目的は x と 3 を結びつける事である。であるから、(define x 3) は結合ではない。

このような一般的な評価規則の例外を「特別な形式(special form)」という。Define は今のところ唯一の特別な形式の例であるが、すぐに別の形を見ることになるだろう。特別な形式はそれぞれ自分自身の評価ルールを持つ。様々な種類の式(それぞれに結びつけられた評価ルール)はプログラミング言語の文法を公正する。他のどんなプログラミング言語より、Lisp は遥かに簡単な文法を持つ;それが、式の評価規則が簡単な一般のルールとそれに付随する少数の特別な形式のための特別なルールとともに記述され得るという事である。