Clojure'da, set
işlevi, vector
veya list
'u otomatik olarak set
içine dönüştürür. Ama bu sorted-set
için durum böyle değildir:Bir liste veya vektör Clojure içinde sıralanmış bir kümeye nasıl dönüştürülür?
(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)}
olduğunu ben ile gelip bir çözüm:
(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 olmadan bunu yapmak için daha iyi/daha deyimsel yolu var mı?
'into' daha deyimseldir. –