SICP問題3.11
3.1.1節の銀行口座手続き
(define (make-account balance) (define (withdraw amount) (if (>= balance amount) (begin (set! balance (- balance amount)) balance) "Insufficient funds")) (define (deposit amount) (set! balance (+ balance amount)) balance) (define (dispatch m) (cond ((eq? m 'withdraw) withdraw) ((eq? m 'deposit) deposit) (else (error "Unknown request -- MAKE-ACCOUNT" m)))) dispatch)
について一連の対話で生成される環境構造
(define acc (make-account 50))
*1
*1:acc 'deposit) 40) accが 90 となっている状態 ((acc 'withdraw) 60) acc が 30 となっている状態 (define acc2 (make-account 100