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 [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/groups/opt_out.