C/C++教程

SICP 笔记 Lec2b Compound Data Part 3 & Part 4

本文主要是介绍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)。

这篇关于SICP 笔记 Lec2b Compound Data Part 3 & Part 4的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!