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

zet*_*ish 4 clojure

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

(let s [1 1 2 2 3 3]
  ...)
Run Code Online (Sandbox Code Playgroud)

所以它产生:

#{1 2 3}
Run Code Online (Sandbox Code Playgroud)

我想出来:

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

但这似乎不是要走的路?有没有这样做的功能?

Art*_*ldt 14

大多数集合都有一个函数可以生成任何形式的seqable:

(set [1 1 2 2 3 3])
#{1 2 3}
Run Code Online (Sandbox Code Playgroud)

对于更有趣的案例,该into函数很好地了解:

(into #{1}  [2 2 3 3])
#{1 2 3}
Run Code Online (Sandbox Code Playgroud)