On Fri, Oct 30, 2009 at 11:37 AM, Chouser <chou...@gmail.com> wrote: > On Fri, Oct 30, 2009 at 11:30 AM, Alex Osborne <a...@meshy.org> wrote: > > > > John Harrop wrote: > >> Was something wrong with this?: > >> > >> (defn my-zipmap > >> "Returns a map with the keys mapped to the corresponding vals." > >> [keys vals] > >> (into {} (map vec (partition 2 (interleave keys vals))))) > >> > >> :) > > > > One reason might be that the original zipmap is 5-10 times faster for > > large numbers of entries as it doesn't create all the temporary seqs. > > Another might be that into, partition and interleave don't exist > yet when zipmap is defined.
Eh. Implementation details. That got me to poke in the source for into and: (def #^{:arglists '([coll x] [coll x & xs]) :doc "conj[oin]. Returns a new collection with the xs 'added'. (conj nil item) returns (item). The 'addition' may happen at different 'places' depending on the concrete type."} conj (fn conj ([coll x] (. clojure.lang.RT (conj coll x))) ([coll x & xs] (if xs (recur (conj coll x) (first xs) (next xs)) (conj coll x))))) This is especially odd: the two-argument case appears to call itself recursively to get the argument for a Java call. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---