删除clojure

时间:2018-04-30 14:29:18

标签: clojure

我有一个序列并试图删除重复

case 1: 

(vec (into #{} [1 1 2 2 3 3])) ; => [1 2 3]


case 2:

(distinct [1 1 2 2 3 3]) ; => [1 2 3]
  1. 两种情况都会带来结果,哪一个更好用?
  2. 这些之间的区别是什么?

1 个答案:

答案 0 :(得分:5)

至于差异,jas在他的评论中涵盖了大部分内容:

  1. distinct很懒惰
  2. 没有参数的
  3. distinct是传感器
  4. distinct维护订单
  5. 至于哪一个是首选,distinct是出于上述原因,但也因为它解释了您的需要。我忘了哪本Lisp书谈过这个(可能是 Let Over Lambda ),但是当给出两个相似函数之间的选择时,更喜欢那个更具体的函数。 distinct解释说您需要不同的元素。 (into #{} xs)可能会产生不同的值,但它也会让您的意图被误解。出于某种原因,有人可能很容易认为你想要一套。 distinct缩小了为什么