dram.me

PAIP读书笔记(第三章)

以下是阅读PAIP第三章部分的一些笔记:

  1. Special Forms是指Common Lisp原生的语法结构,而Macros是指可以展开为special forms和functions组合的结构;
  2. nconc不需要申请额外的内存,只是将前链表和后链表相连接;
  3. defstruct获得的结构体,可以通过#S(type ...)字面常量表示,也就是说默认支持序列化和反序列化,这在数据交互层面很有用,不过hash-table不支持;
  4. tracestepcerrorcheck-typeassert这些运行时的诊断和修复工具是真正体现Common Lisp强大的地方;
  5. (values)类似于C语言中的void
  6. (setf (symbol-function ...) ...)可以覆盖函数定义,对应的有symbol-value,不过只针对special variables,普通的局部变量不能用这种方式,因为Common Lisp和很多编译语言一样,在运行态,普通变量的名称已经在编译时去除了。