11
Clojureでは、set
関数はvector
またはlist
を自動的にset
に変換します。しかし、これはsorted-set
のためのケースではありません。ここでリストやベクトルをClojureでソートセットに変換するには?
(set [3 2 1]) ; #{1 2 3}
(set '(3 2 1)) ; #{1 2 3}
(sorted-set [3 2 1]) ; #{[3 2 1]}
(sorted-set '(3 2 1)) ; #{(3 2 1)}
は、私が思い付くのソリューションです:
(defn sorted-set-from-coll [coll]
(eval (cons sorted-set (seq coll))))
(def v [3 2 1])
(sorted-set-from-coll v) ; #{1 2 3}
(sorted-set-from-coll '(3 2 1)) ; #{1 2 3}
(sorted-set-from-coll [3 1 2]) ; #{1 2 3}
はevalをせずにこれを行うには良い/より多くの慣用的な方法はありますか?
「into」は、起こっていることを伝える(1つのデータ構造を別のデータ構造にする)ために、より慣用的であり、既存の宛先データ構造と共に使用することができます。 –