Common Lisp 特殊快捷字符

Common Lisp Special Shortcut Characters

在Common Lisp中,显然有一些特殊字符作为某些形式的快捷方式。 'x 表示 (quote x)#'f 表示 (function f)。我原以为那些(以及反引号)是唯一的,但后来我了解到 #(),这显然是一个矢量,就在今天有人提到 #.,这显然与评估时间有关.

尽我所能,我似乎无法找到一个完整的列表来说明哪些前缀符号意味着什么以及它们有什么作用?这是留给实施来决定的事情,还是有人可以指出标准中全面列出这些快捷方式的某个地方?

您要找的是Standard Macro Characters

您可以使用 set-dispatch-macro-character 定义您自己的 和 set-macro-character.

事实上,我就是这样实现的XML Parsing

2.4 Standard Macro Characters, enumerates "the macro characters defined initially in a conforming implementation". You can define your own using set-macro-character, which handles the types like ' which have no "prefix" to them, and set-dispatch-macro-character 中的 HyperSpec,它处理以调度字符为前缀的类型(通常为 #)。

除了 HyperSpec,您可能会发现 Chapter 17, Read Macros from Paul Graham's On Lisp helpful. It begins with an implementation of ', i.e., the macro character that expands to (quote ...). Answers to How to define symbols that will work like ( and ) by symbol macro? 也很有用,因为 set-macro-character.

有一些用途