令我惊讶的是,我发现当在集合上调用 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
设计为可以接受任何可序列化的集合。