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)))))

しかし、それは進むべき道ではないようですか?これを行う機能はすでにありますか?

4

2 に答える 2

14

ほとんどのコレクションには、それらをシーケンス可能なものから生成する関数があります。

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

より興味深いケースについては、into関数について知っておくとよいでしょう:

(into #{1}  [2 2 3 3])
#{1 2 3}
于 2012-07-19T01:09:28.807 に答える
1

http://clojure.org/data_structures#Data Structures-Setsから:

set 関数を使用して、コレクション内の値のセットを取得することもできます。

(set [1 2 3 2 1 2 3])
#{1 2 3}
于 2012-07-19T01:09:43.207 に答える