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.
