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))

原创粉丝点击