【问题标题】:Common Lisp Special Shortcut CharactersCommon Lisp 特殊快捷键字符
【发布时间】:2015-03-14 10:11:46
【问题描述】:

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

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

【问题讨论】:

标签: lisp common-lisp syntactic-sugar


【解决方案1】:

你要找的是Standard Macro Characters

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

其实我就是这样实现XML Parsing的。

【讨论】:

    【解决方案2】:

    2.4 Standard Macro Characters 中的 HyperSpec 枚举了“最初在符合要求的实现中定义的宏字符”。您可以使用set-macro-character 定义自己的类型,它处理像' 这样没有“前缀”的类型,以及set-dispatch-macro-character,它处理以调度字符为前缀的类型(通常是#)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-21
      • 2011-07-30
      • 2021-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-19
      • 2013-06-12
      相关资源
      最近更新 更多