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.


Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Reply via email to