2024 Clojure现状调查!中分享你的想法。

欢迎!请查阅关于页面,了解更多关于此功能的信息。

+3
集合
重新标记

有没有什么特别的原因使得clojure.set没有提供symmetric-difference函数?

这看起来是一个非常常见的需求。

`(s/difference (s/union a b) (s/intersection a b))` - 但可能性能不是最优的?
使用clojure.data/diff,然后合并只有a和只有b的部分

1 答案

0

不记得有人曾经要求过它...

对于这类问题,我通常会看看它是否在工具库中露出过,以及其使用频率如何。你有没有相关的数据?

https://grep.app/search?q=symmetric-difference&filter[lang][0]=Clojure 搜索结果不多,但当然名字可能别有所指。
我们的代码库中有多个 `(set/difference (set/union a b) (set/intersection a b))` 实例,但是没有一个特定的名称。

编辑
我还可以找到

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

除此之外,我还会考虑这一点:

* 这是集合上的基本操作
* 不是每个人都知道集合理论
* 有时候人们想象他们能做 X,但实际上没有,如果没有现成的方法
* 通过提供这种操作,人们可以发现自己可能会想要这样的东西

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

否则,缺乏流行也可以被认为是一种自我实现的预言?
现在这里来吸引兴趣。
...