walk is a generic function that recursively walks a tree, rebuilding it. 
prewalk and postwalk are built on walk. postwalk is typically best for 
rewriting the tree, which is the most common thing I use it for.

On Wednesday, March 8, 2017 at 2:48:32 PM UTC-6, [email protected] 
wrote:
>
> Thank you, Alex. That makes sense. What is the main use case for walk?
>
>
> On Wednesday, March 8, 2017 at 3:16:42 PM UTC-5, Alex Miller wrote:
>>
>> Usually the walk solution for transformation is easiest with postwalk:
>>
>> (require '[clojure.walk :refer [postwalk]])
>>
>> (defn m-to-v [m]
>>   (if (map? m)
>>     (mapcat
>>       (fn [[k v :as e]]
>>         (if (coll? v)
>>           (mapv #(into [k] %1) v)
>>           [e]))
>>       m)
>>     m))
>>
>> (postwalk m-to-v data)
>>
>>
>>
>> On Wednesday, March 8, 2017 at 11:38:18 AM UTC-6, [email protected] 
>> wrote:
>>>
>>>
>>> Given this: 
>>>
>>> {:positive :true {30 {4 {50 43, 1000 32}, 6 {40 12, 90 2}, 8 {777 23, 
>>> 9090 1}}}
>>>
>>> I'd like a series of arrays that I can feed into (reduce) so I can 
>>> easily sum them:
>>>
>>> [ 30 4 50 43 ]
>>>
>>> [ 30 4 1000 32 ]
>>>
>>> [ 30 6 40 12 ]
>>>
>>> [ 30 6 90 2 ]
>>>
>>> [ 30 8 777 23 ]
>>>
>>> [ 30 8 9090 1 ]
>>>
>>> I've been trying to work this out using "walk" recursively, but then I 
>>> wondered if perhaps I am missing something obvious? Does Clojure offer a 
>>> straightforward way to do this?
>>>
>>>
>>>
>>>
>>>
>>>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to