相关术语
REPL :Lisp 的交互式开发环境,即 read(读取)、eval(执行)、print(打印)、loop(循环)。REPL 也被称为交互式顶层构件(Interactive toplevel)。用一段 Common Lisp 代码即可体现:(loop (print (eval (read))))。
Lisp-1 和 Lisp-2 :在 Lisp-1 里,函数名和变量在同一空间,所以函数名和变量名不能重名;而 Lisp-2 中,变量名和函数名不在一个空间里。Common Lisp 是 Lisp2,Clojure、Scheme 是 Lisp1。
格林斯潘第十定律 :“任何 C 或 Fortran 程序复杂到一定程度之后,都会包含一个临时开发的、不合规范的、充满程序错误的、运行速度很慢的、只有一半功能的 Common Lisp 实现。”,详细请见维基百科词条页面。
S表达式 :S-expression,即 Lisp 的括号表示法,如 (+ 1 1) 就是 S 表达式。S 表达式在 Lisp 既可表示为数据,又可表示为代码:(+ 1 1) 表示为求 1+1 的值,'(+ 1 1) 表示为由“+、1、1”三个元素组成的列表。
原子 :指不可分割的那部分,Lisp 是由列表组成的结构,列表是可分割的,因为它由一个个元素组成,那些元素就是原子,它们是组成列表的最小单位,除了列表外,都是原子,包括数组等结构都是原子。
自由变量(Free variable) :类似其他语言中的全局变量,defvar、defparameter、setf 和 setq 定义的就是自由变量。
形式(form) :能够正确求值的S表达式,如果有自己的求值规则就叫特殊形式。
fold(高阶函数) :也被称为:Reduce。
谓词函数 :谓词部分就是给定一个未知数 x,要么返回真,要么返回假。在 Common Lisp 中多数谓词函数的函数名以字母“p”结尾(比如 numberp 用来判断是否是数字),部分函数没有遵循这个命名原则,比如 null。