| Song's profileSICP自留地BlogListsNetwork | Help |
|
|
July 28 sicp 3.7;不难看出make-joint需要做的是在客户账户中添加一条额外的密钥并返回该账户
;由于帐户这个对象在系统中是以过程形式定义的,不调用过程无法修改其本地参数 ;有必要在make-account中添加额外的命令来收集新密钥 (define (make-account balance password);初始化时以list形式输入password
(define (withdraw amount) (if (>= balance amount) (begin (set! balance (- balance amount)) balance) "Insufficient funds")) (define (deposit amount) (set! balance (+ balance amount)) balance) (define (in? p password1) (cond ((null? password1) #f) ((eq? p (car password1)) #t) (else (in? p (cdr password1))))) (define (addpassword password1) (set! password (cons password1 password))) (define (dispatch p m) (if (in? p password);测试p是否在password列表中 (cond ((eq? m 'withdraw) withdraw) ((eq? m 'deposit) deposit) ((eq? m 'addpassword) addpassword) (else (error "Unknown request -- MAKE-ACCOUNT" m))) (error "Incorrect password" m)) ) dispatch) (define (make-joint account oldpassword newpassword) (begin ((account oldpassword 'addpassword) newpassword) account)) TrackbacksThe trackback URL for this entry is: http://mysicp.spaces.live.com/blog/cns!76113039590E11D7!162.trak Weblogs that reference this entry
|
|
|