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.

Reply via email to