欢迎!请参阅关于页面以获得更多关于这个工作的信息。
Clojure核心语言很小。更高级的语法通常使用宏来实现,这些宏扩展为数不多的核心特殊形式。其中一个特殊符号是def,用于在当前命名空间中中继Vars。但是,还有一个intern也几乎做同样的工作(除了选择命名空间),并且只使用一个函数和一些互操作性实现。
def
Vars
intern
def为什么需要是特殊形式?哪些是def可以实现的用例,而这些用例不能通过intern和一些额外的互操作或宏来实现?
defmacro扩展为defn,进一步扩展为def。如果def不是特殊形式,这将如何工作?某些事情需要编译器知道以进行引导。
defmacro
defn