在Common Lisp中,显然有一些特殊字符可以作为某些表单的快捷方式。 'x
表示(quote x)
。 #'f
表示(function f)
。我曾经认为那些(以及反击)是唯一的,但后来我学会了#()
,这显然是一个向量,就在今天有人提到#.
,这显然与评估时间有关
尽可能地尝试,我似乎无法找到一个完整的列表,其中包含哪些前缀符号意味着什么以及它们的作用?这是由实施决定的东西,还是有人可以指向标准中某个全面列出这些快捷方式的地方?
答案 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的方式。