SICP 第二章笔记 符号数据

这一小节东西并不多,主要是一些帮助理解的实例。不过第一次接触符号数据可能会觉得有点绕(

还是惯例的习题答案

数据抽象导引

见:数据抽象导引

层次性数据和闭包性质

见:层次性数据和闭包性质

符号数据

先说点别的。

自然语言里,说出你的名字说出"你的名字"表达了两种截然不同的意思。被加上引号的”你的名字”表达的是这个单词本身,而不是它的意义。

引号

回到Scheme,为了描述出符号本身,将符号与符号的意义区分开来,我们就需要一种加引号的能力。

举例来说,如果你想得到表(a b),你不能使用(list a b),因为这样会构造出a和b的值的表,而不是a和b这两个符号本身的表。

为了得到被引用的a,我们使用(quote a)这一特殊形式,为了方便简写为'aquote也可用于复合对象,如(quote (a b))'(a b)

(define a 1)
(define b 2)

(list a b)    ; (1 2)
(list 'a b)   ; (a 2)
(list 'a 'b)  ; (a b)
(quote (a b)) ; (a b)
'(a b)        ; (a b)

(car '(a b)) ; a
(cdr '(a b)) ; (b)

基本过程eq?可用于判断两个符号参数是否为同一个符号。

三个实例就不在这里赘述了…直接看书吧

抽象数据的多重表示

见:抽象数据的多重表示

带有通用型操作的系统

待续

comments powered by Disqus