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

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