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

欢迎!请参阅 关于 页面了解更多关于如何运作的信息。

+3
集合
重新标记

为什么 clojure.set 不提供 symmetric-difference 函数有特定的原因吗?

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

`(s/difference (s/union a b) (s/intersection a b))` - 但这可能会带来次优性能?
clojure.data/diff,然后合并 only-a 和 only-b 部分

1 个答案

0
by

从未记得有人提出过...

对于这类事情,我通常考虑它在实用库中的出现频率和被使用的频率。你有没有这方面的数据?

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

编辑了
我还可以找到

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

除此之外,我认为

* 这是集合上的基本操作
* 并不是每个人都能全面地了解集合论
* 有时候人们想象自己可以做X,但如果没有现成的解决方案,实际上做不到
* 通过提供这个操作,人们可以发现/记住他们可能需要这样的功能

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

否则,缺乏知名度也可以被认为是一种自我实现的预言?
它现在存在于这里是为了引起兴趣。
...