欢迎!请查看关于页面以了解有关该行为的更多信息。
Clojure核心语言很小。更高级的语法通常使用宏扩展到几个核心特殊形式来实现。其中一个特殊符号是def,用于在当前命名空间中内联Vars。然而,还有intern也几乎实现了相同的功能(除了ns的选择),并且仅用一些函数和一些互操作来实现。
def
Vars
intern
为什么def值得成为一个特殊形式?是否存在一些只能通过intern和一些额外的互操作或宏才能实现,但def可以实现的用例吗?
defmacro扩展到defn,再扩展到def。所以如果def不是一个特殊形式,这将如何工作?某些事情需要对编译器了解以便启动。
defmacro
defn