memo->clojure.set
clojure-1.1.0のset一覧のメモ
clojure.contrib.setの関数がどうして少ないのかと思ったらclojre.setが有りましたよ><
clojure.set API reference (Clojure)
union,intersection,difference
和集合、共通集合、差集合
(use 'clojure.set) (union #{1 2 3 4 5} #{3 4 5 6 7}) ;=> #{1 2 3 4 5 6 7} (intersection #{1 2 3 4 5} #{3 4 5 6 7}) ;=> #{3 4 5} (difference #{1 2 3 4 5} #{3 4 5 6 7}) ;=> #{1 2}
select
選択
(select even? #{0 1 2 3 4 5 6 7 8 9}) ;=> #{0 2 4 6 8}
project,index
mapを内包したsetの構造ってどんな時に用いるんだろう?
(def xs #{{:a 11 :b 1 :c 1 :d 4} {:a 2 :b 12 :c 2 :d 6} {:a 3 :b 3 :c 3 :d 8 :f 42}}) ;(doc project) (project xs [:c]) ;=> #{{:c 3} {:c 2} {:c 1}} (index xs [:c]) ;=> {{:c 2} #{{:a 2, :b 12, :c 2, :d 6}}, ; {:c 3} #{{:a 3, :b 3, :c 3, :d 8, :f 42}}, ; {:c 1} #{{:a 11, :b 1, :c 1, :d 4}}}
rename-keys,rename
よく解らん><
join
結合
(def a #{{:a 1 :b 2}}) (def b #{{:c 3 :d 4}}) (join a b) ;=> #{{:d 4, :c 3, :a 1, :b 2}} ;追加1 (def a #{{:a 1 :b 2},{:n 9 :m 11}}) (def b #{{:c 3 :d 4},{:x 5 :y 7}}) (join a b) ;=> #{{:y 7, :x 5, :n 9, :m 11} ; {:y 7, :x 5, :a 1, :b 2} ; {:d 4, :c 3, :n 9, :m 11} ; {:d 4, :c 3, :a 1, :b 2}}
おいおい修正>A<
- joinに追加1
- set-keymapsの、組み合わせみたい