我惊讶地发现,当在集合上调用 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
应该接受任何可序列化集合。