あそびばLinux

Linux関連を中心に

SICP 1.1

SICPの復習も兼ねて、学んだ内容を自分なりに噛み砕くため、
大枠と必要なら詳細をブログに書いてみる事にした。
不定期に。

1.1 プログラムの要素

1.1.1

schemeの演算規則など、基本的な文法説明。

1.1.2

defineと環境(大域環境の説明)

1.1.3

組み合わせ(式)を評価するためのインタプリタの基本的な手続きの説明
評価の規則は本質的に再帰的(rucursive)である。

  • > 部分式の評価結果に対し別な部分式が帰ってきた場合、再帰的に式を評価し続ける。
  • > 木構造再帰の関係(tree accumulation)

特殊形式について

1.1.4

合成手続きの説明と実例。
defineについて再度説明。
defineによる手続きの定義は、すなわちその環境における手続きに対する名称の対応付けである。

1.1.5

置き換えモデルの説明。
3章で説明が出てくるが、set!等の破壊的代入が導入されるとこのモデルは破綻する。

作用的順序(applicative-order evaluation)と正規順序(normal-order evaluation)の違い。
実際にインタプリタが採用しているのは作用的順序(単純な展開ではなく、引数の評価と作用を行う)
schemeの式を眺めたとき、全ての部分式を展開するといった解釈方法は誤り。

1.1.6

condと特殊形式if
ifは何故特殊形式なのか?

のcons.とalt.は共に単一の式で無ければならない。

q1.5

1.1.7

小数・分数の扱い方の違い

1.1.8

手続きの定義の中に、自分自身の手続きの評価が含まれている。

ブラックボックスとしての手続き抽象
利用者に内部構造を隠す。

変数スコープとブロック構造の話

まとめ

1.1はschemeの言語としての部品と処理系に関する基本的な話。
以上、終わり。