我了解引号是如何用语言表示的:
(equal ''(1 2) (list 'quote (list 1 2))) ;; => T
但是准引号呢?是这样的吗:
(equal ``(1 2) (list '<???> (list 1 2)))
两者都quasiquote
和backquote
而不是<???>
不工作。
我了解引号是如何用语言表示的:
(equal ''(1 2) (list 'quote (list 1 2))) ;; => T
但是准引号呢?是这样的吗:
(equal ``(1 2) (list '<???> (list 1 2)))
两者都quasiquote
和backquote
而不是<???>
不工作。
Common Lisp 中没有标准的表示。指定了反引号应该做什么,但没有等效于quote
. 特别是规范在2.4.6中说,在给出了反引号应该如何表现的规范之后:
实现可以自由地将反引号形式 F1 解释为任何形式 F2,当计算时,将产生与上述定义所暗示的结果相同的结果,前提是替代形式 F2 的副作用行为也与上面给出的描述一致。
请注意,这实际上不是问题,因为反引号是您可以自己实现的东西,同时quote
需要在语言的基础上。
通常不需要代表:
'`(1 2) -> '(1 2)
'`(,1 2) -> '(1 2)
'`(,a 2) -> (list* a '(2))
实现可以扩展为特殊结构,因此反引号表达式也可以打印为反引号表达式。