令我惊讶的是,我发现当在集合上调用 distinct 时会抛出异常,例如:
(distinct #{1 2 3})
一种解决方案是首先对集合调用 seq:(distinct (seq #{1 2 3}))
但是,这似乎是一种不必要的仪式,因为我想到的其他所有序列操作符,如 map、keep、reduce、first、some 等,都可以接受集合。
distinct
的文档字符串指出
> 返回一个不需要重复元素的集合的惰性序列。
因为 (coll? #{1 2 3}) => true
这可能会使用户感到困惑。
关于此问题的一些相关讨论可以在 这里 和 这里 找到,但没有做出任何实际的决定。
我建议 distinct 应该接受任何可序列化的集合。