This post has two parts.

Part 1.

I know that the API is trying to hit the sweet spot on the brevity vs.
information curve, but there are several areas where more information
is needed; one of these is clojure.walk.

Let's say that I have some nested set of vectors:
(def nestV [ [0 [0] ] [0 0] ])
and I want to apply
#(+ % 3)
to each element and get out a nested set of vectors with the same
shape as nestV
[ [3 [3] ] [3 3]].

The overview to clojure.walk says the following: "It takes any data
structure (list, vector, map, set, seq), calls a function on every
element, and uses the return value of the function in place of the
original."  This sounds like I will find a function within this
namespace that will do what I want.  I tried prewalk and postwalk,
which, from the their usage "examples" would appear to be what I want.

But when I try to test them I find the following:
user=> (prewalk #(+ 3 %) nestV)
#<CompilerException java.lang.ClassCastException:
clojure.lang.PersistentVector (NO_SOURCE_FILE:0)>
user=> (postwalk #(+ 3 %) nestV)
#<CompilerException java.lang.RuntimeException:
java.lang.ClassCastException: clojure.lang.PersistentVector
(NO_SOURCE_FILE:0)>

The problem with the usage "examples" is that they don't actually show
what the outcome will be.  Further, there is no documentation other
than the API on clojure.walk.


Part 2

Is there a function in the API that allows me to do the type of
calculation I described above?

user=> (some-function  #(+ % 3)  nestV)
(((3(3))(3 3))

-- 
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

To unsubscribe from this group, send email to 
clojure+unsubscribegooglegroups.com or reply to this email with the words 
"REMOVE ME" as the subject.

Reply via email to