我在没有',
的clojure lib中定义命名空间(ns myproject.hello)
但是,我使用'来使用它。
(use 'myproject.hello)
这是为什么?这背后有什么逻辑吗?在gosh(方案的方言)中,我使用没有'即(使用myproject)为什么这种不规则?
答案 0 :(得分:15)
简短回答:ns
是一个宏,因此不会评估其参数。 use
是一个函数,因此必须引用其参数以防止编译器对它们进行评估。
use / require函数不是Clojure原始设计的一部分,它们由贡献者添加。他们需要进行大修。
答案 1 :(得分:3)
惯用法是:
(ns myproject.hello
(:使用myproject.world))