令我惊讶的是,我发现当在集合上调用 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。