我对Clojure有点新意,并想知道是否有人可以在这里帮助我。 我正在尝试使用clojure的持久数据结构。我有2个hashset,如下例所示。
(def a #{[1 345] [2 346] [3 347]})
(def b #{1 2})
所以,我想从' a '中删除' b '。我期待如下输出:
#{[3 347]}
我已经寻找了很多尝试并了解如何做到这一点,但到目前为止我只是感到困惑。我尝试过玩/删除/尝试将'a'转换为地图但是无法获得预期的结果 。
答案 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)