I think you're getting confused. (map reduce + %) won't work, because the signature of the map function is (map func & colls). In other words, the second argument is expected to be a collection, but you've put in +, which is a function.
When dealing with nested collections, you may want to work from the inside out. So take one of your inner lists: s1: (1 2 3 4) (reduce + s1) => 10 (apply + s1) => 10 You can use reduce or apply to sum the lists. On the next level, we have: s2: ((1 2 3 4) (2 3 4 5) (3 4 5 6)) (map (partial reduce +) s2) => (10 14 18) So we're using map to sum each list. (partial reduce +) is just another way of writing #(reduce + %). Next is the final layer: signal: (((1 2 3 4) (2 3 4 5) (3 4 5 6)) ((3 4 5 6) (4 5 6 7) (5 6 7 8))) (map (partial map (partial reduce +)) signal) => ((10 14 18) (18 22 26)) Again, we add a map, and use partial. We could perhaps make this a little clearer by using for: (for [s signal] (for [c s] (reduce + c))) - James On 25 August 2010 15:06, Glen Rubin <rubing...@gmail.com> wrote: > After toying around at the REPL I realize that I have been working > with a heretofore invalid understanding of collections. For example, > working with the following collection(s): > > signal: > (((1 2 3 4) (2 3 4 5) (3 4 5 6)) ((3 4 5 6) (4 5 6 7) (5 6 7 8))) > > I wanted to sum each individual list: e.g. (1 2 3 4) = (10) > > I thought I could do this as follows: > > (map #(map reduce + %) signal) > > This resulted in an error, so trying to comprehend why I ran the > following: > > (map #(map identity (take 1 %)) signal) > > which results in, > (((1 2 3 4)) ((3 4 5 6))) > > So, clojure sees 'signal' as 2 collections, whereas I thought it was a > single collection. This makes me concerned that I have been doing > everything wrong thus far and getting computational errors. :( So, > how should I sum each individual list in the above collections? > > -- > 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