lisp - 如何在语法树 (CL) 中表示准引号
问题描述
我了解引号是如何用语言表示的:
(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
需要在语言的基础上。
推荐阅读
- android - 将项目上传到 GitHub 时重复项目文件夹
- python-3.x - 运行时错误 R6034,在 Windows 7 上为 Python3 安装 OpenCV 后
- swift - 具有长 JSON 数据的多个 Alamofire 请求问题
- python - Python:find_all 仅适用于某些标签
- django - Django queries using a list
- uwp - UWP BitmapImage.Source - 网络 Uri 工作,但本地磁盘 Uri 不工作
- r - 闪亮:当 eventReactive 函数将另一个 eventReactive 函数的输出作为输入时,ignoreNULL 不起作用?
- java - 分类器和下游和只使用分类器有什么区别
- python - 与重复索引合并 - 行数大于预期
- c++ - 如何组织与两个对象有关的变量