练习 3.1

定义:

;;; 1-make-accumulator.scm

(define (make-accumulator value)
    (lambda (add-value)
        (set! value (+ value add-value))
        value))

需要说明的一点是,因为在 lambda 体内有一个隐式的 begin ,所以可以直接在 lambda 里面使用多条表达式。

测试:

1 ]=> (load "1-make-accumulator.scm")

;Loading "1-make-accumulator.scm"... done
;Value: make-accumulator

1 ]=> (define A (make-accumulator 5))

;Value: a

1 ]=> (A 10)

;Value: 15

1 ]=> (A 10)

;Value: 25

讨论

blog comments powered by Disqus