欢迎!请访问关于页面获取更多有关如何使用本网站的信息。
Clojure核心语言很小。更高级的语法通常是通过宏来实现的,这些宏会展开成一系列核心特殊形式。其中一个特殊符号是def,用于在当前命名空间中内联Vars。然而,也存在一个做几乎同样事情的intern函数,并且只使用一些集成操作。
def
Vars
intern
def为什么要成为特殊形式?有其他用例需要def而不仅仅是用intern和一些集成操作或宏来实现吗?
defmacro展开为defn,而defn又展开为def。如果def不是特殊形式,那会如何工作?在引导过程中必须有一些内容是编译器所知道的。
defmacro
defn