10.3 引用

特殊形式 quote 会原样返回它唯一的参数,不对其进行求值。这提供了一种在程序中使用常量符号和列表的方式(符号与列表本身并非自求值对象)。(数字、字符串、向量这类自求值对象不需要加 quote。)

Special Form: quote object

该特殊形式直接返回 object,不对其进行求值。 返回的值可能是共享对象,不应当被修改。 See 自求值形式

由于 quote 在程序中使用频率极高,Lisp 为此提供了一种便捷的读取语法。一个撇号字符(‘'’)后跟一个 Lisp 对象(采用读取语法格式),会展开为一个列表:该列表的第一个元素是 quote,第二个元素则是这个对象。因此,读取语法 'x(quote x) 的简写形式。

以下是一些使用 quote 的表达式示例:

(quote (+ 1 2))
     ⇒ (+ 1 2)
(quote foo)
     ⇒ foo
'foo
     ⇒ foo
''foo
     ⇒ 'foo
'(quote foo)
     ⇒ 'foo
['foo]
     ⇒ ['foo]

尽管表达式 (list '+ 1 2)'(+ 1 2) 都会生成与 (+ 1 2) 相等的列表,但前者生成的是全新创建的可变列表,而后者生成的列表由可能被共享的 cons 单元构成,不应被修改。 See 自求值形式

其他引用类构造包括 function(see 匿名函数)—— 它会对以 Lisp 编写的匿名 lambda 表达式进行编译;以及 ‘`’(see 反引号)—— 该符号用于仅引用列表的部分内容,同时计算并替换列表的其他部分。


emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© 2025 Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike