3.2.3 局所状態の保管場所としてのフレーム

Exercise 3.10

(let ((⟨var⟩ ⟨exp⟩)) ⟨body⟩) は ((lambda (⟨var⟩) ⟨body⟩) ⟨exp⟩) と解釈される。 その場合を環境モデルを使って説明せよ。

(define W1 (make-withdraw 100))
(W1 50)
(define W2 (make-withdraw 100))

書き換えた場合の処理は

(define (make-withdraw initial-amount)
    ((lambda (balance) 
        (lambda (amount)
            (if (>= balance amount)
                (begin (set! balance (- balance amount))
                    balance)
                "Insufficient funds"))) initial-amount))

自分で考えた答え f:id:cocodrips:20170925195524j:plain

なんか色々違うっぽい。。 色々人の解答をみてみたりした。。

Envの考え方がそもそも違ったっぽい

解答ver2

解答verFix f:id:cocodrips:20171002225647j:plain

参考

Exercise 3.10 – SICP exercises SICP問題3.10 - tmurataの日記