clojure.core取消报价和取消报价拼接

clojure.core取消报价和取消报价拼接,clojure,Clojure,在clojure.core文件的顶部(注释和名称空间声明的下方),有两个没有额外代码或信息的定义: (def unquote) (def unquote-splicing) 它们做什么/为什么在那里?它们是一种虚拟值。读取器将~x展开为(unquote x),将~x展开为(unquote x)。然后,这些类型的列表在语法quote中进行特殊处理 它们的声明还允许它们在语法引号之外使用,例如在您自己的宏中 由于它们不绑定任何内容,因此在语法引号或处理它们的宏之外使用它们会引发异常

在clojure.core文件的顶部(注释和名称空间声明的下方),有两个没有额外代码或信息的定义:

(def unquote)
(def unquote-splicing)

它们做什么/为什么在那里?

它们是一种虚拟值。读取器将
~x
展开为
(unquote x)
,将
~x
展开为
(unquote x)
。然后,这些类型的列表在语法quote中进行特殊处理

它们的声明还允许它们在语法引号之外使用,例如在您自己的宏中

由于它们不绑定任何内容,因此在语法引号或处理它们的宏之外使用它们会引发异常