令我惊讶的是,我发现在集合上调用 distinct
会抛出异常,例如:
(distinct #{1 2 3})
一种解决方法是首先在集合上调用 seq
: (distinct (seq #{1 2 3}))
然而,这似乎是不必要的仪式,因为我想得起的其他任何序列操作符 - 如 map
、keep
、reduce
、first
、some
等都会接受集合。
distinct
的文档字符串表明
> 返回去除重复元素 coll 元素的懒惰序列。
由于 (coll? #{1 2 3}) => true
,这对用户来说很困惑。
关于它在 math.combinatorics 中的出现,已经有一些讨论这里 和 这里,但并没有真正做出决定。
我建议 distinct
应该接受任何可序列的 coll。