Hussein, I don't get an NPE passing that to traverse, but nothing much interesting happens either. The top-level data structure (and the vectors within "children") aren't associative, and so don't pass the branch? test (contains? % "children").
You could certainly extend the zipper to cover both cases, but there may well be a more compact way to accomplish your goal. What do you want to do with the piece of data? Take care, Moe On Fri, Aug 21, 2015 at 5:57 PM, Hussein B. <hubaghd...@gmail.com> wrote: > Here is my zipper: > > (z/zipper #(contains? % "children") #(get % "children") (fn [_ c] c) s) > > On Friday, August 21, 2015 at 6:49:25 PM UTC+2, Moe Aboulkheir wrote: >> >> Hussein, >> >> How are you constructing your zipper, before passing it to traverse? >> Note that clojure.zip doesn't work on arbitrary data structures >> without being given some information about how to descend >> into/construct nodes, etc. - i.e. z/next expects a zipper, and your >> data structure isn't a zipper, but an input to a zipper. Unless >> you've written a zipper you omitted from your post, zipping over maps, >> in particular, may not be as convenient as you're imagining. >> https://clojuredocs.org/clojure.zip/zipper has helpful examples in it. >> >> Take care, >> Moe >> >> On Fri, Aug 21, 2015 at 5:06 PM, Hussein B. <hubag...@gmail.com> wrote: >> > Hi, >> > >> > I changed println to z/node , this time I'm getting: >> > >> > NullPointerException clojure.zip/branch? (zip.clj:73) >> > >> > On Friday, August 21, 2015 at 5:56:10 PM UTC+2, Moe Aboulkheir wrote: >> >> >> >> Hussein, >> >> >> >> The println inside (recur) will return nil. >> >> >> >> Take care, >> >> Moe >> >> >> >> On Fri, Aug 21, 2015 at 4:35 PM, Hussein B. <hubag...@gmail.com> wrote: >> >> > Hi, >> >> > >> >> > I have this structure: >> >> > >> >> > (def s [{"n" {"id" "a"} "d" 2 "children" [{"n" {"id" "c"} "d" 4 >> >> > "children" >> >> > []}]} {"n" {"id" "b"} "d" 3 "children" []}]) >> >> > >> >> > >> >> > >> >> > And I wrote a function with zippers to traverse it: >> >> > >> >> > (defn traverse [col] >> >> > (loop [z col] >> >> > (if (= (z/next z) z) >> >> > z >> >> > (if (z/branch? z) >> >> > (recur (z/next z)) >> >> > (recur (-> z println z/next)))))) >> >> > >> >> > >> >> > But I'm getting: NullPointerException clojure.zip/next >> >> > (zip.clj:236) >> >> > >> >> > Any ideas? >> >> > >> >> > Thanks for help. >> >> > >> >> > -- >> >> > You received this message because you are subscribed to the Google >> >> > Groups "Clojure" group. >> >> > To post to this group, send email to clo...@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+u...@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 unsubscribe from this group and stop receiving emails from it, >> >> > send >> >> > an >> >> > email to clojure+u...@googlegroups.com. >> >> > For more options, visit https://groups.google.com/d/optout. >> > >> > -- >> > You received this message because you are subscribed to the Google >> > Groups "Clojure" group. >> > To post to this group, send email to clo...@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+u...@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 unsubscribe from this group and stop receiving emails from it, send >> > an >> > email to clojure+u...@googlegroups.com. >> > For more options, visit https://groups.google.com/d/optout. > > -- > 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 unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- 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 unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.