clojure - Does (into) do any higher-level inference to stay idiomatic on output type? -


say have key-value pair i've agnostically defined key-value map:

(def foo {:bar "baz" :bat "squanch"}) 

it occurs me @ later time set operations on it, i'll need convert relation, clojure cheatsheet says type of set, go ahead , grab (into) , go it:

(set/project (into #{} foo) [:bar]) #{{}} 

huh?

(into #{} foo) #{[:bar "baz"] [:bat "squanch"]} 

that's not (project) expects @ all. according the docs:

;; `project` strips out unwanted key/value pairs set of maps.  ;; suppose have these descriptions of cows:  user=> (def cows #{  {:name "betsy" :id 33} {:name "panda" :id 34} }) #'user/cows  ;; care names. can them this:  user=> (project cows [:name]) #{{:name "panda"} {:name "betsy"}} 

so close.

should expecting (into) know mean when convert 1 of these types, or there way? if it's going this, might roll own thing few map/flatten calls, that's i'm trying avoid phrasing things in more elegant language of sets.

for clarity, here example of thought best done (set/project) seems not possible above expectations:

(defn exclude-keys "filters out argument-provided keys key-value   map."   [input-map excluded-keys]   (-> input-map (select-keys (set/difference (into #{} (keys input-map))                                               excluded-keys)))) 

i guess i'm surprised takes syntax accomplish in clojure.

into conjs elements of sequence given collection e.g.

(into #{} [:a :b :b :c :a]) => #{:c :b :a} 

since maps sequences of pairs end set of pairs in input map.

if want remove collection of keys map can use dissoc:

(defn exclude-keys "filters out argument-provided keys key-value   map."   [input-map excluded-keys]   (apply dissoc input-map excluded-keys)) 

Comments

Popular posts from this blog

matlab - error with cyclic autocorrelation function -

django - (fields.E300) Field defines a relation with model 'AbstractEmailUser' which is either not installed, or is abstract -

c# - What is a good .Net RefEdit control to use with ExcelDna? -