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

否则,缺乏流行度也可以被认为是自我实现的预言吗?
现在这里有了,可以引发兴趣。
...