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,但没有,如果没有 readily 可用的解决方案
*, 通过提供这个操作,人们可以发现/记住他们可能需要这样一个东西

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

否则,缺乏流行也可以被认为是某种自我实现的预言?
by
它现在存在是为了吸引人们的兴趣。
...