2024 Clojure状态调查!中分享您的想法。

欢迎!请参阅关于页面了解更多有关该功能的信息。

+3
集合
重新标记

有没有特别的理由让clojure.set不提供symmetric-difference函数?

这似乎是一种相对常见的需求。

`(s/difference (s/union a b) (s/intersection a b))` - 但显然这可能有次优性能?
clojure.data/diff,然后结合仅存在于a和仅存在于b的部分

1 答案

0

没有人问过我类似的问题...

对于这类事情,我通常会看看它是否出现在工具库中,以及它的用途频率。你有什么相关数据吗?

我们在代码库中有多个`(set/difference (set/union a b) (set/intersection a b))`的实例,但没有给它起一个特定的名字。

编辑
我还可以找到

https://grep.app/search?q=set-xor&filter[lang][0]=Clojure

除此之外,我还考虑了以下几点:

* 这是对集合的基本操作
* 并非每个人都全面了解集合理论
* 有时候人们想象他们可以做X,但如果没有现成的方法,他们并不能做到
* 通过提供这种操作,人们可以发现/记住他们可能想要这种东西

最后一点是最重要的:人们不会使用(或考虑使用)他们不熟悉的东西。所以Clojure可以帮助教授/提醒这些经典概念。

否则,缺乏的人气也可以被看作是一种自我实现的预言?
现在这存在是为了引起兴趣。
...