如何从clojure中的序列创建一个集合

时间:2012-07-19 01:05:52

标签: clojure

在Clojure中将序列转换为集合的惯用方法是什么?例如,我在点上填写什么?

(let s [1 1 2 2 3 3]
  ...)

因此它产生:

#{1 2 3}

我想出来了:

(let [s [1 1 2 2 3 3]]
  (loop [r #{} s s]
    (if (empty? s) r (recur (conj r (first s)) (rest s)))))

但这似乎不是要走的路?是否有功能呢?

2 个答案:

答案 0 :(得分:14)

大多数集合都有一个函数可以生成任何可以选择的函数:

(set [1 1 2 2 3 3])
#{1 2 3}

对于更有趣的案例,into函数很容易了解:

(into #{1}  [2 2 3 3])
#{1 2 3}

答案 1 :(得分:1)

来自http://clojure.org/data_structures#Data结构集:

您还可以使用set函数获取集合中的一组值:

(set [1 2 3 2 1 2 3])
#{1 2 3}