Clojure-从自定义集中删除条目

时间:2018-04-11 17:10:32

标签: clojure

我对Clojure有点新意,并想知道是否有人可以在这里帮助我。 我正在尝试使用clojure的持久数据结构。我有2个hashset,如下例所示。

(def a #{[1 345] [2 346] [3 347]})

(def b #{1 2})

所以,我想从' a '中删除' b '。我期待如下输出:

#{[3 347]}

我已经寻找了很多尝试并了解如何做到这一点,但到目前为止我只是感到困惑。我尝试过玩/删除/尝试将'a'转换为地图但是无法获得预期的结果 。

3 个答案:

答案 0 :(得分:0)

以下是一种方法:从a构建地图并使用dissoc删除b中找到的密钥。

> (set (apply dissoc (into {} a) b))

#{[3 347]}

答案 1 :(得分:0)

这是我的解决方案,但我必须承认我更喜欢以上一个:

(set (filter #(not (contains? b (first %))) a))

#{[3 347]}

答案 2 :(得分:0)

使用幽灵:

(setval [ALL (comp b first)] NONE a)