我了解引号在语言中的表示方式
(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))
实现可以扩展到特殊的构造中,因此反引号表达式也可以打印为反引号表达式。