令我意外的是,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。