it's not quite at compile-time (since it's a dynamic call to eval, after all, and "names" and "headers" aren't known at compile time), but it is calling it eval-time, for lack of a better phrase.
On Fri, Oct 10, 2014 at 1:35 PM, Sean Corfield <s...@corfield.org> wrote: > Ah, interesting... I hadn't considered it was running the zipmap at > compile-time so it only runs it once as opposed to running it for each row! > > Sean > > On Oct 10, 2014, at 1:06 PM, Ben Wolfson <wolf...@gmail.com> wrote: > > I believe it's because the `mapper` function is just creating and > returning a map literal. The "mapper" function in the evaled version is > something like this: > > > > user> (def names '[n1 n2 n3 n4]) > > #'user/names > > user> (def headers '[h1 h2 h3 h4]) > > #'user/headers > > user> `(fn [[~@names]] ~(zipmap headers names)) > > (clojure.core/fn [[n1 n2 n3 n4]] {h4 n4, h3 n3, h2 n2, h1 n1}) ;; just > a map literal, whose keys are already known. > > > > Whereas in the first version, zipmap has to be called, iterating over > headers and names each time. > > > -- Ben Wolfson "Human kind has used its intelligence to vary the flavour of drinks, which may be sweet, aromatic, fermented or spirit-based. ... Family and social life also offer numerous other occasions to consume drinks for pleasure." [Larousse, "Drink" entry] -- 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.