Hatena::Groupsicp

SICP読書記

 | 

2009-11-21

問題3.3

問題3.3 - SICP読書記 を含むブックマーク はてなブックマーク - 問題3.3 - SICP読書記

(define (make-account balance password)
  (define (withdraw amount)
	(if (>= balance amount)
		(begin (set! balance (- balance amount))
			   balance)
		"Insufficient funds"))
  (define (deposit amount)
	(set! balance (+ balance amount))
	balance)
  (define (dispatch input-password m)
	(if (eq? input-password password)
		(cond ((eq? m 'withdraw) withdraw)
			  ((eq? m 'deposit) deposit)
			  (else (error "Unknown request -- MAKE-ACCOUNT"
						   m)))
		(error "Incorrect Password")))
  dispatch)

もうメソッド呼び出しにしか見えない。

フィールドが環境に閉じ込められてるってぐらいで。

 |