如何在Clojure中从序列中创建一个集合

4
在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个回答

14

大多数集合都有一个从任何可序列化对象生成它们的函数:

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

对于更有趣的情况,into 函数是值得了解的:

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

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接