I believe the for
and doseq
documentation (at least docstrings) fail to explain the semantics of the :while
modifier. The existence is documented, but not the behavior.
I would like to request that the doctoring be updated, especially since it behaves in what I believe is a reasonable but counter-intuitive way. I believe a reasonable person would expect that :while false
would trigger the for
or doseq
to exit; however it does not. Rather it causes the inner-most loop containing the :while
to exit, but most notably the outer loops continue to iterate.
Another discussion of this can be found here: clojurians