为什么用于ns的奇怪'用法/与Clojure一起使用?

时间:2010-08-19 19:14:52

标签: clojure

我在没有',

的clojure lib中定义命名空间
(ns myproject.hello) 

但是,我使用'来使用它。

(use 'myproject.hello)

这是为什么?这背后有什么逻辑吗?在gosh(方案的方言)中,我使用没有'即(使用myproject)为什么这种不规则?

2 个答案:

答案 0 :(得分:15)

简短回答:ns是一个宏,因此不会评估其参数。 use是一个函数,因此必须引用其参数以防止编译器对它们进行评估。

use / require函数不是Clojure原始设计的一部分,它们由贡献者添加。他们需要进行大修。

答案 1 :(得分:3)

惯用法是:

(ns myproject.hello

(:使用myproject.world))