根据目前我们的讨论,我们可以归纳出Lisp的另一关键特性:像 +
这样的符号本身并不是计算机可执行的一组指令。相反,这些符号仅用于暂时定位相关的定义或指令集。我们看到的只是通过该符号名称才能找到实际指令的方式。人的名字也是一样的。我可以被称为 ‘Bob’;然而,我不是字母 ‘B’、‘o’、‘b’ 的组合,而是(或者曾是)一个与特定生命形式长期关联的意识。名字并不是我,但可以用来指称我。
在 Lisp 中,一组指令可以被关联到多个名字上。例如,加法运算的计算机指令可以关联到符号 plus
,也可以关联到符号 +
上(在某些 Lisp 方言中是这样的)。对于人名,我可以被称为 ‘Robert’,也可以被称为 ‘Bob’,以及其他词汇。
但是,一个符号一次只能有一个函数定义与之关联。否则,计算机就会困惑应该使用哪个定义。如果这种情况发生在人类身上,世界上也只能有一个人被命名为 ‘Bob’。然而,符号所代表的函数定义可以很容易地被更改。(See 安装函数定义.)
由于 Emacs Lisp 非常庞大,通常会以能够指明函数属于Emacs的哪个部分的方式来命名符号。因此,所有涉及 Texinfo 处理的函数名都以 ‘texinfo-’ 开头,而处理邮件读取的函数则以 ‘rmail-’ 开头。