分类: LINUX
2011-04-30 15:10:58
Lisp functions take Lisp values as input and return Lisp values. They are executed at run-time. Lisp macros take Lisp code as input, and return Lisp code. They are executed at compiler pre-processor time, just like in C. The resultant code gets executed at run-time. Almost all the errors that result from using macros can be traced to a misunderstanding of this fact.
----
* 几本必须看的书
* cltl2 第 35 页,有各种诡异字符的意义
* common lisp 是不区分大小写的,似乎它有这样一个思想, shift 键要尽量少按,或者不按
* symbol, 很难理解的一个东东,但是当我理解到"数据和函数是一样的",就完全明白是怎么回事了,它就是一个"记号", 可能是数据,也可能是函数,没有区别. 可以认为 symbol 等价于 C 语言中的"符号表".
* assign 和 bound 的区别, assign 是改变一个 symbol 的 value, bound 是"先把一个 symbol 的值存起来,给它一个新的值, 出去作用域之后, 再把原来的值放回来", 和 perl 中的 local 变量类似.
* list 处理的几个重要函数 : map mapcar reduce remove-if remove-if-not
* values 函数,可以用于形成"多个值", 比如多个返回值......