std.lib.transform.base.complex
assocs
added in 3.0
(assocs m k v)(assocs m k v sel func)Similar to assoc but conditions of association is specified through sel (default: identity) and well as merging specified through func (default: combine). (assocs {:a #{1}} :a #{2 3 4}) => {:a #{1 2 3 4}}
(assocs {:a {:id 1}} :a {:id 1 :val 1} :id merge) => {:a {:val 1, :id 1}}
(assocs {:a #{{:id 1 :val 2} {:id 1 :val 3}}} :a {:id 1 :val 4} :id merges) => {:a #{{:id 1 :val #{2 3 4}}}}
dissocs
added in 3.0
(dissocs m k)gets
added in 3.0
(gets m k)gets-in
added in 3.0
(gets-in m ks)merges
added in 3.0
(merges m1 m2)(merges m1 m2 sel)(merges m1 m2 sel func)Like merge but works across sets and will also combine duplicate key/value pairs together into sets of values.
(merges {:a 1} {:a 2}) => {:a #{1 2}}
(merges {:a #{{:id 1 :val 1}}} {:a {:id 1 :val 2}} :id merges) => {:a #{{:id 1 :val #{1 2}}}}
merges-nested
added in 3.0
(merges-nested)(merges-nested m)(merges-nested m1 m2)(merges-nested m1 m2 sel)(merges-nested m1 m2 sel func)Like merges but works on nested maps
(merges-nested {:a {:b 1}} {:a {:b 2}}) => {:a {:b #{1 2}}}
(merges-nested {:a #{{:foo #{{:bar #{{:baz 1}}}}}}} {:a #{{:foo #{{:bar #{{:baz 2}}}}}}} map? merges-nested) => {:a #{{:foo #{{:bar #{{:baz 2}}} {:bar #{{:baz 1}}}}}}}
merges-nested*
added in 3.0
(merges-nested*)(merges-nested* m)(merges-nested* m1 m2)(merges-nested* m1 m2 sel)(merges-nested* m1 m2 sel func)Like `merges-nested but can recursively merge nested sets and values
(merges-nested* {:a #{{:id 1 :foo #{{:id 2 :bar #{{:id 3 :baz 1}}}}}}} {:a {:id 1 :foo {:id 2 :bar {:id 3 :baz 2}}}} :id)
=> {:a #{{:id 1 :foo #{{:id 2 :bar #{{:id 3 :baz #{1 2}}}}}}}}