Hi,
I'm trying to remove an element from nested data structure (nesting in
unknown, so I'm trying to come up with a generic solution:
(def z [
{"a" {"b" 1 "c" 2}
"children" [{"a" {"b" 3 "c" 4}
"children" []}]}
{"a" {"b" 5 "c" 6}
"children" []}
{"a" {"b" 7 "c" 8}
"children" [{"a" {"b" 9 "c" 10}
"children" []}
{"a" {"b" 11 "c" 12}
"children" [{"a" {"b" 13 "c" 14} "children" []} {"a"
{"b" 15 "c" 16} "children" []}]}]}])
(def loz (z/zipper #(get % "children") #(get % "children") (fn [_ x ] x)
{"children" z}))
(defn to-change? [loc]
(if (= 11 (get-in (z/node loc) ["a" "b"]))
true
false))
(loop [loc loz]
(if (z/end? loc)
(z/root loc)
(recur (z/next
(cond (to-change? loc)
(modify loc)
:else loc)))))
That gives a very wrong output:
({"a" {"b" 1, "c" 2}, "children" [{"a" {"b" 3, "c" 4}, "children" []}]} {"a"
{"b" 5, "c" 6}, "children" []} ({"a" {"b" 9, "c" 10}, "children" []}))
Parent {"a" {"b" 7 "c" 8} is getting deleted which is wrong.
What I'm doing wrong?
Thanks for help and time.
--
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.