On Fri, Oct 30, 2009 at 11:44 AM, John Harrop <jharrop...@gmail.com> wrote:
> 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.

I thought that's what we were discussing: the implementation
and its 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.

That's the old-style interop syntax playing tricks on you.

        (. clojure.lang.RT (conj coll x))

is the same as

        (clojure.lang.RT/conj coll x)

--Chouser

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to