問題4.19 – SICP(計算機プログラムの構造と解釈)その191
2009年05月30日
問題4.19
次の式を評価した際の結果について。
(let ((a 1)) (define (f x) (define b (+ a x)) (define a 5) (+ a b)) (f 10))
Ben の主張する define
に逐次規則を使って結果を得る場合。
;;; M-Eval input: (let ((a 1)) (define (f x) (define b (+ a x)) (define a 5) (+ a b)) (f 10)) ;;; M-Eval value: 16
Alyssa の主張する"問題4.16"での実装を使って結果を得る場合。
;;; M-Eval input: (let ((a 1)) (define (f x) (define b (+ a x)) (define a 5) (+ a b)) (f 10)) *** ERROR: Unassigned variable -- LOOKUP-VARIABLE-VALUE a
Eva の主張する"定義は同時"と見なす実装を使って結果を得る場合。
Gauche の実装がこのパターンに相当する?
gosh> (let ((a 1)) (define (f x) (define b (+ a x)) (define a 5) (+ a b)) (f 10)) 20
と思ったら、次の様な解説が。Gauche は Alyssa の解釈らしい。
Scheme:内部defineの評価順
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542