在Clojure中返回两组相同的元素

时间:2014-08-25 21:37:24

标签: collections clojure set

我有两套:

#{1 2 3}#{7 8 3}

我想创建一个只返回每个集合的共享值的函数,3。

我不能使用交集;它不适用于我当前版本的clojure。

谢谢!

2 个答案:

答案 0 :(得分:5)

只要我记得,clojure.set/intersection功能一直存在,你确定你正确使用它吗?这绝对有效:

(require '[clojure.set])
(clojure.set/intersection #{1 2 3} #{7 8 3})
=> #{3}

或许是时候更新到更新版的Clojure ......

答案 1 :(得分:2)

我不明白为什么clojure.set/intersection无法使用,但您可以定义自己的(defn intersection [x y] (into #{} (filter (partial contains? x) y)))

一个简单的实现是

(intersection #{1 2 3} #{7 8 3})
;#{3}

{{1}}

您可以找到更全面,更快的版本here