计算机程序的构造和解释
1. scheme的美妙
scheme美观打印的格式规则,键值对
(+ (* 3
(+ (* 2 4)
(+ 3 5)))
(+ (- 10 7)
6))
Lisp的语法非常简单,对各种表达式的求值规则:
可以描述为一个简单的通用规则和一组针对不多的特殊形式的专门规则
过程定义的一般形式:
(define (<name> <formal parameters>) <body>)
(define (square x) (* x x))
(define (abs x)
(cond ((> x 0) x)
((= x 0) 0)
((< x 0) (- x))))
**句法**
(cond (<p1> <e1>)
(<p2> <e2>)
(<pn> <en>)
)
(if <predicate> <consequent> <alternative>)
** 最常用的三个符合运算符:**
- (and … )
- (or … )
- (not )
构造数据抽象
能够构造复合数据对象的能力,可以处理与数据有关的各种问题
(make-rat )
(numer )
(denom
Lisp 表结构数据
闭包性质:
组合起数据对象得到的结果本身还可以通过同样的操作再进行组合。
人生第一个知道的拉丁词汇: nihil (虚无,毫无价值)
fringe:穗;非重要,次要的
使用约定的界面
在工程设计中,模块化结构式控制复杂度的一种威力强大的策略
一个图形语言
描述一种语言时,应该将注意力集中到语言的基本原语,它的组合手段以及它的抽象手段,这是最重要的。
wave: 挥手;舞动;波浪
roger: 已收到,明白;v,sex
vert: 绿色;森林中的草木;绿色的
2. 模块化、对象和状态
在这一章里,我们要研究两种特点很鲜明的组织策略,它们源自对系统结构的两种非常不同的“世界观”。
第一种策略将注意力集中在对象上,将一个大型系统看成一大批对象,它们的行为可能随着时间的进展而不断变化。
另一种组织策略将注意力集中在流过系统的信息流上,非常像电子工程师观察一个信号处理系统。
即,基于对象的途径和基于流处理的途径。
局部状态变量
withdraw 取现金
insufficient funds金额不足
balance 平衡,均衡;账户余额