On 9 January 2011 16:23, bOR_ <boris.sch...@gmail.com> wrote: > (type (sorted-map-by > 3 1 2 4 5 3)) > clojure.lang.PersistentTreeMap > user> (type (select-keys (sorted-map-by > 3 1 2 4 5 3) (list 5 2 3))) > clojure.lang.PersistentArrayMap > > Not sure if this is related in any way but the topic of PersistentTreeMaps, > but I noticed this morning that select-keys doesn't return the same type of > map as that it was fed. That happens more often in clojure, so it might be > the default behaviour, and not something that needs to be fixed. > > For now I just looked at source of select-keys, and made a copy of the > function that builds a sorted-map-by, rather than just a {}. Is that a > sensible way to do it.
How about using (empty map): (defn select-keys2 "Returns a map containing only those entries in map whose key is in keys" {:added "1.0"} [map keyseq] (loop [ret (empty map) keys (seq keyseq)] (if keys (let [entry (. clojure.lang.RT (find map (first keys)))] (recur (if entry (conj ret entry) ret) (next keys))) ret))) user=> (type (select-keys2 (sorted-map-by > 3 1 2 4 5 3) (list 5 2 3))) clojure.lang.PersistentTreeMap -- Michael Wood <esiot...@gmail.com> -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en