如何使用clojure.set/difference?为什么它不能在PersistentSet上工作?

5
以下代码:
(require '[clojure.set])
(println (clojure.set/difference '("a" "b" "c" "d") '("c" "d" "e" "f")))

出现以下错误:

java.lang.ClassCastException: clojure.lang.PersistentList (repl-1:47)

我不明白我做错了什么。这不应该打印出 ("a" "b") 吗?
2个回答

15

这些是列表,而不是集合。

(println (clojure.set/difference #{"a" "b" "c" "d"} #{"c" "d" "e" "f"}))

(打印输出结果)

1
有差异的列表版本吗?还是我需要自己写? - Jon Bristow
3
JBristow: 不行,但你可以将列表转换为集合:(clojure.set/difference (set '(1 2)) (set '(1 3))) => #{2} - j-g-faustus

4

我认为你不需要require '[clojure.set]。它似乎会自动加载到核心中。只需要启动repl,输入以下内容即可(至少对我来说是这样)。

user=> (clojure.set/difference (set '(1 2 3)) (set '(3 4 5)))

\#{1 2}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接