Clojure 中集合的并集和差集
union and difference of sets in Clojure
我正在阅读本书的 Clojure 部分 Seven Languages in Seven Weeks。它说:
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})
这不适用于我的版本(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)
在 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)
为什么我会收到这些错误,我应该如何解决?
除 clojure.core
和 user
以外的名称空间只有在有人加载它们时才会加载。加载命名空间的标准方法是 require
.
(require '[clojure.set :as set])
(set/union ...)
我正在阅读本书的 Clojure 部分 Seven Languages in Seven Weeks。它说:
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})
这不适用于我的版本(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)
在 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)
为什么我会收到这些错误,我应该如何解决?
除 clojure.core
和 user
以外的名称空间只有在有人加载它们时才会加载。加载命名空间的标准方法是 require
.
(require '[clojure.set :as set])
(set/union ...)