問題3.8 – SICP(計算機プログラムの構造と解釈)その110

問題3.8

引数が 0 の場合に内部変数 x0 にする手続き。

(define f
  (let ((x 1))
       (lambda (n)
               (if (= n 0)
                   (begin (set! x 0) x)
                   x))))

;; 左から右に評価する場合
(f 0)
gosh> 0
(f 1)
gosh> 0
;; したがって (+ (f 0) (f 1)) は
(+ 0 0)
gosh> 0

;; 右から左に評価する場合
(f 1)
gosh> 1
(f 0)
gosh> 0
;; したがって (+ (f 0) (f 1)) は
(+ 0 1)
gosh> 1
計算機プログラムの構造と解釈
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
«
»