On Dec 31, 2013, at 5:08 PM, Armando Blancas wrote: > The implementation of seq-zip uses seq? as its branching predicate. As a > result the zipper goes down on () thinking it can have children: > > user=> (seq? ()) > true > user=> (seq? {}) > false > user=> (seq? #{}) > false > user=> (seq? []) > false
Does that mean that you think that the behavior is correct and expected? It goes down () thinking it can have children -- fine -- but when there aren't any children shouldn't zip/next continue until it hits the next thing? Why should it "land" on a non-existent nil instead? Compare: Traversing '((1) 0) with zip/next we get 4 items: ((1) 0), (1), 1, 0 Traversing '(() 0) with zip/next we also get 4 items: (() 0), (), nil, 0 It seems to me that these shouldn't both give 4 things, since the second clearly contain one less thing. That alleged nil just isn't there. Note also that: Traversing '((nil) 0)) with zip/next we also get 4 items: ((nil) 0), (nil), nil, 0 That one seems right to me -- there really IS a nil there this time. But the one with () doesn't. If I'm alone in this then I guess I'll just write my own zip_really_next that does what I expect, but I'm curious if others also think that the current behavior is correct. Thanks, -Lee -- -- 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/groups/opt_out.