SICP 笔记 Lec2b Compound Data Part 3 & Part 4
Lec2b 复合数据Compound Data
Part 3
41" - 56"
从有理数类比到用二维坐标来表示点的位置,而两个点即可表示一个线(向量)。
1.
引入Closure(闭包)的概念
我的理解:
所有的object可以被“完整”地封装,作为其他object的一部分。这个过程可以无穷无尽地进行下去,其所有的性质不会损耗。
即“道生一,一生二,二生三,三生万物”。
(如fortan就的数组(arrays)就不具有这种性质,array的元素不能是array。
2.
利用抽象层来分隔概念,强调抽象(Abstraction)的重要性。
Name 通过给每个小的成分命名,来分隔过程。使得其中一些部分的改变不需要影响全局。
Part 4
56"
再次强调Abstraction的重要性,愈发地模糊了data和procedure的边界。
1.
衡量标准
Contracts
衡量标准也可以作为概念的另一种表达方式。
We can say a rational number really is just this axiom(below)
Eg.
IF X = (MAKE-RAT N D)
THEN
(NUMBER X)/(DENOM X) = N/D
2.
抽象的最底层,没有所谓pairs的定义,而是“绝对的”抽象
(define (cons a b)
(lambda (pick)
(cond ((= pick 1) a)
((= pick 2) b))))
(define (car x) (x 1))
(define (cdr y) (y 1))
从这里可以发现,“有理数”与其说是一个“数据”结构,不如说是返回的一个lambda的procedure。
Q&A:
Q:
这些有理数的procedure存储在何处?
A:
procesudure也是一个object。
过程不仅仅是做“做事情”,还是概念实体(conceptual entities),是对象(object)。