让我惊讶的是,当在集合上调用 distinct
时会抛出异常,例如:
(distinct #{1 2 3})
一种解决方案是在集合上首先调用 seq
:(distinct (seq #{1 2 3}))
然而,当其他所有我能够想到的序列运算符(如 map
、keep
、reduce
、first
、some
等)都能接受集合时,这似乎是一种不必要的仪式。
此外,distinct
的文档字符串声明
> 返回一个去除重复元素的集合的惰性序列。
由于 (coll? #{1 2 3}) => true
,这使用户难以理解。
在 math.combinatorics 主题的相关讨论中,有人提出了关于此问题的讨论,但并没有作出真正的决定。在这里 和 在这里。
我建议 distinct
应该接受任何可序列化的集合。