Clojure中联合和集合的差异

Mor*_*a R 4 union clojure set

我正在阅读七周七语中的Clojure部分.它说:

You can merge two sets, like this:
user=> (clojure.set/union #{:skywalker} #{:vader})
#{:skywalker :vader}
Or compute the difference:
(clojure.set/difference #{1 2 3} #{2})
Run Code Online (Sandbox Code Playgroud)

这不适用于我的版本(Clojure 1.7.0和Java版本"1.8.0_51"):

user=> (clojure.set/difference #{1 2 3} #{4})
ClassNotFoundException clojure.set  java.net.URLClassLoader.findClass (:-1)

user=> (clojure.set/union #{:skywalker} #{:vader})
ClassNotFoundException clojure.set  java.net.URLClassLoader.findClass (:-1)
Run Code Online (Sandbox Code Playgroud)

Clojuredocs中,在示例中使用了较短的函数名称,但这也不起作用:

user=> (difference #{1 2} #{2 3})
CompilerException java.lang.RuntimeException: Unable to resolve symbol: difference in this context, compiling:(NO_SOURCE_PATH:14:1) 
Run Code Online (Sandbox Code Playgroud)

为什么我收到这些错误,我该如何解决?

noi*_*ith 7

名称空间除了clojure.coreuser仅在有人加载时才加载.加载命名空间的标准方法是使用require.

(require '[clojure.set :as set])

(set/union ...)
Run Code Online (Sandbox Code Playgroud)