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))` 的实例,但没有为其指定具体名称。
by
编辑 by
我还可以找到

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

除此之外,我认为

这是一个很基本的集合操作
不是每个人都知道集合理论
有时人们想象他们可以做X,但实际上并没有,如果没有现成的解决方案
通过提供这个操作,人们可以探索/记住他们可能需要这样一个东西

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

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