問題1.2〜問題1.5 – SICP(計算機プログラムの構造と解釈)その1
2008年11月06日
以前読みかけて挫折していた SICP にもう1度挑戦するために今度は blog でメモを取りながら続けてみる。
問題1.2
(/ (+ 5 4 (- 2 (- 3 (+ 6 (/ 4 5)))))
(* 3 (- 6 2) (- 2 7)))
;=> -37/150
問題1.3
(define (square a) (* a a))
(define (sum-of-squares a b) (+ (square a) (square b)))
(define (sum-of-squares-biggers a b c)
(if (> a b)
(if (> b c)
(sum-of-squares a b)
(sum-of-squares a c))
(if (> a c)
(sum-of-squares a b)
(sum-of-squares b c))))
sum-of-squares
が4ヶ所も出てきてしまっているので改良
(define (sum-of-squares-biggers a b c)
(if (> a b)
(sum-of-squares a (if (> b c) b c))
(sum-of-squares b (if (> a c) a c))))
問題1.4
b > 0
の場合 (+ a b)
を評価する。
b <= 0
の場合 (- a b)
を評価する
問題1.5
作用的順序
評価をしながら展開していく
(test 0 (p)) ;=>第1引数0を評価 0
(test 0 (p)) ;=>第2引数(p)を評価(p)
;=>無限ループになる
正規順序
すべて展開してから評価
(test 0 (p))
(if (= 0 0) 0 (p))
0
;=>(p)は評価されない。
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542