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.

Reply via email to