Sorry, the 'in' is obviously a typo and should be left out. I tested
the code in the REPL but then retyped it from memory rather than copy
and pasting. :)

-Per

On Thu, Oct 7, 2010 at 1:53 PM, Per Vognsen <per.vogn...@gmail.com> wrote:
> Try something like this:
>
> (defn dmap [& args]
>  (for [[head items] args]
>        item in items]
>    [head item]))
>
> -Per
>
> On Thu, Oct 7, 2010 at 1:29 PM, Stefan Rohlfing
> <stefan.rohlf...@gmail.com> wrote:
>> Dear Clojure Group,
>>
>> Following an Enlive tutorial I wanted to implement a function 'd-map'
>> that takes an arbitrary number of [:key (list of values)] parameters
>> like this:
>>
>> (d-map [:headline ["this" "is" "me"] ]
>>            [:points [1 2 3] ]
>>            [:comments [10 20 30] ])
>>
>>
>> and returns a collection of [:key value] vectors where each value is
>> grouped with its respective key:
>>
>> [ [:headline "this"] [:headline "is"] [:headline "me"]
>>  [:points 1] [:points 2] [:points 3]
>>  [:comments 10] [:comments 20] [:comments 30] ]
>>
>>
>> I could only come up with the following implementation for 'd-map'.
>> Although it works it just does not 'feel' elegant of even very
>> functional:
>>
>> (defn d-map [& kfps]
>>  (let [keys     (map first kfps)
>>         fns       (map second kfps)]
>>    (loop [keys keys fns fns res []]
>>      (if (seq keys)
>>        (recur (rest keys) (rest fns)
>>                   (into res (map (fn [x] [(first keys) x]) (first
>> fns))))
>>        res))))
>>
>> I am relatively new to Clojure and want to learn how to write
>> idiomatic code. I therefore appreciate any alternative implementation
>> that might help me learn some new things.
>>
>> Stefan
>>
>> --
>> 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 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