Common Lisp特殊快捷方式字符

时间:2015-01-15 21:23:59

标签: lisp common-lisp syntactic-sugar

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

尽可能地尝试,我似乎无法找到一个完整的列表,其中包含哪些前缀符号意味着什么以及它们的作用?这是由实施决定的东西,还是有人可以指向标准中某个全面列出这些快捷方式的地方?

2 个答案:

答案 0 :(得分:9)

2.4 Standard Macro Characters中的HyperSpec,枚举"最初在一致的实现中定义的宏字符"。您可以使用set-macro-character来定义自己的set-dispatch-macro-character,它处理类似'的类型,它们没有"前缀"他们和Chapter 17, Read Macros,它们处理以调度字符为前缀的类型(通常为#)。

除了HyperSpec之外,您可能会发现Paul Graham的 On Lisp 中的How to define symbols that will work like ( and ) by symbol macro?很有帮助。它以'的实现开始,即扩展为(quote ...)的宏字符。 {{3}}的答案也很有用,因为 set-macro-character 有一些用法。

答案 1 :(得分:5)

您要找的是Standard Macro Characters

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

事实上,这就是我实施XML Parsing的方式。