読者です 読者をやめる 読者になる 読者になる

猫型エンジニアのブログ

プログラム/ネットワーク系の技術関連をまとめたページです 

1.1.1 ~ 1.1.3

SICP
1 手続きによる抽象の構築

抽象化は、一般的に計算機科学においては対象に関する詳細を捨象すること(Wikipedia

1.1  プログラムの要素

抽象化:合成物に名前をつけ、単一のものとして扱う。
例:
一番単純な抽象化は、defineを用いて、名前と数の対応付け(1.1.2)
次に複雑な抽象化は、defineを用いて、名前と合成演算の対応付け(1.1.4)

1.1.1 式

式を入力すると解釈系は評価結果の値を返す。
式が数の場合は、評価結果として数値を返す。

式を評価するとあるが、評価方法に関しての記載はない。
入れ子構造の組み合わせ式を含めた式の具体的な評価方法は1.1.3である。

486
486
上は非常にシンプルだが、式を評価してその値を印字するという解釈系のまさに本質的な動作をさしている、ということに注意!

1.1.2 名前と環境

名前とは変数を識別するもの。
変数を評価するとオブジェクトを返す(オブジェクト例として、例えば数値)

ハードウェア的には、オブジェクトはメモリのアドレスに格納されている。このアドレス(変数)を識別するものが名前となる。

defineが出てくるが、defineは特殊形式でその評価したときの値は実装に依存。
ここでは名前を付ける対象の計算オブジェクトとして数を用いているが、後に手続きもその対象となる。LISPの1節冒頭の手続きとデータを区別しないことの一例。

  • 計算オブジェクトとして数に名前をつける 1.1.2参照
  • 計算オブジェクトとして手続きに名前をつける(引数はない) 1.1.2参照
  • 計算オブジェクトとして手続きにな名前をつける(引数あり) 1.1.4参照

の3通りが存在する。


1.1.3 組み合わせ式の評価

 組み合わせ式は、これ以上各部分が分割できなくなる基本式になるまで、部分式に対して再帰処理を繰り返す。再帰処理は階層的な木構造オブジェクトを扱うのに強力な技法である。

式の評価方法

 評価方法として、一般規則と少数の特殊形式の2つがある。基本式の評価方法(例 数の評価は数値)と特殊形式(例 define)の評価方法はそれぞれ異なる。特殊形式はそれぞれ特有の評価形式を持つ。