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

欢迎!请参阅关于页面以获取有关此页面的更多信息。

+3
集合
重新标记

为什么 clojure.set 没有提供 symmetric-difference 函数,有特殊原因吗?

这似乎是很常见的需求。

`(s/difference (s/union a b) (s/intersection a b))` - 但或许这有次优的性能?
clojure.data/diff, 然后 combine the only-a and only b thirds

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可以有助于教授/提醒这些经典概念。

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