3.1-3.4
来源:互联网 发布:淘宝供货是什么意思 编辑:程序博客网 时间:2024/05/21 06:31
;CHAPTER 3;3.1(define (make-accumulator x) (lambda (y) (begin (set! x (+ x y)) x)))(define A (make-accumulator 5));3.2(define (make-monitored f) (define (mmf count) (lambda (x) (cond ((eq? x 'how-many-calls) count) ((eq? x 'reset-count) (set! count 0)) (else (begin (set! count (+ 1 count)) (f x)))))) (mmf 0))(define s (make-monitored sqrt));3.3 3.4(define (make-account balance password) (define count 0) (define (withdraw amount) (if (>= balance amount) (begin (set! balance (- balance amount)) balance) "Insufficient funds")) (define (deposit amount) (set! balance (+ balance amount)) balance) (define (dispatch pas m) (if (eq? pas password) (cond ((eq? m 'withdraw) withdraw) ((eq? m 'deposit) deposit) (else "Unknow request -- MAKE-ACCOUNT")) (begin (set! count (+ 1 count)) (if (> count 7) call-the-cops do-nothing)))) dispatch)(define acc (make-account 100 'secret-password))(define do-nothing (lambda (x) '()))(define call-the-cops (lambda (x) 'call-the-cops))