Lambda 表达式是一种具有如下结构的列表:
(lambda (arg-variables...) [documentation-string] [interactive-declaration] body-forms...)
Lambda 表达式的第一个元素始终是符号 lambda。
这一设计表明该列表表示一个函数。函数定义以 lambda 开头的原因是:
避免其他用途的列表被误判为合法的函数。
第二个元素是一个符号列表——即参数变量名(see 参数列表的特性), 这部分被称为lambda 列表。当调用一个 Lisp 函数时, 参数值会与 lambda 列表中的变量进行匹配,这些变量会被赋予由传入值构成的局部绑定。 See 局部变量。
文档字符串是置于函数定义内的一个 Lisp 字符串对象,用于为 Emacs 帮助功能描述该函数。 See 函数的文档字符串。
交互式声明是形如 (interactive code-string) 的列表。
该声明用于指定:若函数以交互方式调用,应如何提供参数。
包含此类声明的函数被称为命令(commands);它们可通过 M-x 调用,或绑定到某个按键上。
不打算以这种方式调用的函数不应包含交互式声明。
关于如何编写交互式声明,see Defining Commands。
剩余的元素构成函数 体(body):即实现函数功能的 Lisp 代码(或者用 Lisp 程序员的话来说, “一组待求值的 Lisp 形式”)。函数的返回值为函数体最后一个元素的求值结果。