Jason Sankey a écrit :
> (if (and (branch? loc) (not (empty? (children loc))))
> (recur (-> loc down rightmost))
> loc))
>
> Being new to both clojure and zip I admit there's still a good chance
> that I have no idea what I'm talking about :).
>
No you are right and there's the same bug in prev.
Here is a patch that fixes both bugs. (Rich, can I open an issue?)
Btw, (not (empty? coll)) is not idiomatic, (seq coll) is the clojure way to
test for non-emptiness.
Thanks for the report,
Christophe
--
Professional: http://cgrand.net/ (fr)
On Clojure: http://clj-me.blogspot.com/ (en)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---
diff --git a/src/clj/clojure/zip.clj b/src/clj/clojure/zip.clj
index 77a2d8a..a136084 100644
--- a/src/clj/clojure/zip.clj
+++ b/src/clj/clojure/zip.clj
@@ -212,8 +212,8 @@
[loc]
(if-let [lloc (left loc)]
(loop [loc lloc]
- (if (branch? loc)
- (recur (-> loc down rightmost))
+ (if-let [child (and (branch? loc) (down loc))]
+ (recur (righmost child))
loc))
(up loc)))
@@ -231,8 +231,8 @@
(throw (new Exception "Remove at top"))
(if (pos? (count l))
(loop [loc (with-meta [(peek l) (assoc path :l (pop l) :changed? true)] ^loc)]
- (if (branch? loc)
- (recur (-> loc down rightmost))
+ (if-let [child (and (branch? loc) (down loc))]
+ (recur (righmost child))
loc))
(with-meta [(make-node loc (peek pnodes) rs)
(and ppath (assoc ppath :changed? true))]