如何在语法树(CL)中表示准引号



我了解引号在语言中的表示方式

(equal ''(1 2) (list 'quote (list 1 2))) ;; => T

但准引号呢?是不是有点像

(equal ``(1 2) (list '<???> (list 1 2)))

CCD_ 1和CCD_ 2而不是CCD_。

Common Lisp中没有标准表示。指定了应该做什么,但没有等效于quote的内容。特别是2.4.6中的规范,在给出了反报价应该如何表现的规范之后:

一个实现可以自由地将后引号形式F1解释为任何形式F2,当评估时,该形式将产生与上述定义所暗示的结果相同的结果,前提是替代形式F2的副作用行为也与上述描述一致。

请注意,这实际上不是问题,因为backquote是您可以自己实现的东西,而quote需要在语言的核心中。

通常不需要表示:

'`(1 2) -> '(1 2)
'`(,1 2) -> '(1 2)
'`(,a 2) -> (list* a '(2))

实现可以扩展到特殊的构造中,因此反引号表达式也可以打印为反引号表达式。

相关内容

  • 没有找到相关文章

最新更新