問題4.32 – SICP(計算機プログラムの構造と解釈)その206
2009年06月22日
問題4.32
3章のストリームと4.2.3節の遅延評価リストとの間の違いは、リストの car
の部分を遅延評価するかどうかである。
以下のように4.2.3節の遅延評価リストでは、未定義の x
, y
を使ったリストを定義できる。
;;; L-Eval input: (define st (cons x y)) ;;; L-Eval value: ok ;;; L-Eval input: st ;;; L-Eval value: (compound-procedure (m) ((m x y)) <procedure-env>)
3章のストリームでは、リスト(ストリーム) car
部分は遅延されないのでエラーとなる。
gosh> (define st (cons-stream x y)) *** ERROR: unbound variable: x Stack Trace: _______________________________________
cdr
部分は遅延される。
gosh> (define st (cons-stream '1 y)) st gosh> st (1 . #<closure (memo-proc memo-proc)>)
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542