さて、2回目です。
まだまだストック分^^;毎週できるかなぁ。
というか、復讐の会の件進んでないね--;
1.1.3 組み合わせの評価
この章の目的のひとつ、手続き的な考え方
解釈系自体も手続きに従っている
一般的処理での重要な点
- 評価規則は再帰的(recursive)
P.5真ん中の式を書いて、DrSchemeでステップ実行して確認。たしかに4回。わかりやすい。
(* (+ 2 (* 4 6) ) (+ 3 5 7) )
第2、3の規則
環境は評価が行われる文脈を提供するもの・・・
defineはspecial forms
1.1.4 合成手続き
手続き定義について学ぶ
2つの演算
- 手続きを作る
- 名前を付ける
合成手続きは基本手続きと同様に扱うことができる
(define (square x) (* x x)) (define (sum-of-squares x y) (+ (square x)(square y))) (define (f a) (sum-of-squares (+ a 1) (* a 2)))
ここまで書いてしまうともうなにがなんやら(w
関数の名前付けが重要。
1.1.5 手続き作用の置き換えモデル
解釈系の実際の動きではない
理工学のの現象をモデル化する場合、単純で不完全なモデルからはじめる
作用的順序と正規順序
ここまで習った解釈系の評価モデル
別の評価モデル…評価方法を選べるってたしか言ってたような。
この方式を正規順序の評価
一つ前のを作用的順序の評価
基本的にLispは作用的順序で評価されるけど、
正規順序もなにかで有効な道具として使われるらしい。
今回はここまで。
プログラムがどんな風に解釈してるかなんて、いままであんま考えたことなかったので、とっても新鮮な気持ち。