令我惊讶的是,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
应该接受任何可迭代的集合。