chili 默默学编程

SICP(8):赋值和状态


概念:

函数和对象的区别,在于对象的属性有时间特性,可以发生变化;

函数使用替换模型、对象使用环境模型;



例子:

(define make-counter
  (lambda (n)
    (lambda ()
      (SET! n (+1 n))
      n)))


(define c1 (make-counter 0))
(define c2 (make-counter 10))

(c1)  // 1
(c2)  // 11
(c1)  // 2
(c1)  // 3
(c2)  // 12


reply ( 0 )