首先本课的提纲:
三大主题:
(1)黑盒抽象(black box)
(2)约定接口(convertional interfaces)
(3)元语言抽象
LISP概览
黑盒抽象将一个过程封装起来,我们不需要知道盒子里面是怎么实现的,只需要输入然后得到输出就OK了,因此我们可以以此来建立更大的盒子。
面向对象的编程,是很多的对象通过消息串联在一起的,然后还有“流”“元语言抽象”需要我们查询理解,明天会补上 的,今天太晚了。
在对待一门新语言时,我们要稳3点:
1.基本元素 2. how to put it together(conbition) 3. 抽象的方法(如何将元素封装成盒子)
“+”是内建于LISP的基本对象
(+ 12 13 15)
上面 的称为一个组合式,“+”称为运算符 后面的数字称为运算对象, 这是前缀表示法,这种组合式和树的结构类似
lisp中抽象的方法:
(define A (*5 5 ))
A 代表后面的5*5
(define B (*A A))
B代表 A*A
返回定义的符号,也就是返回A,第二个返回B
(define (square x) (* x x))
这表示定义了一个过程了
(square 10) 是100
定义一个过程的最佳方式(我还没理解为什么是最佳的)
(define square (lambda(x)) (* x x))
这样同样定义了一个过程,这种方法是前面的那种方法的语法糖
由此我们可以想象“+”也是一个类似的过程,我们在实际用的时候其实并不知道,我们用的是内建的还是自建的。
(define (abs x )
(cond(< x 0) ( -x)
(> x 0) (x)
(= x 0 ) (0)
)
)
文章很垃圾 我是新手 大家指点一下 我也不会写笔记和文章,课程理解也不深,所以下次等我再次上课的时候,深入理解一定会修改的。。