Write explicit local loops with loop/recur when an algorithm needs evolving bindings, early termination, or state transitions that are clearer than a pipeline or reduce.
loop introduces a set of local bindings and a recursion point that recur can jump back to. Together, loop/recur is the idiomatic way to write an explicit loop without mutating variables.
You use it when:
reduceJava mental model: this is the “while loop” tool, but the evolving state is explicit in the binding vector instead of being mutated in place.
This section helps you recognize when loop/recur is the simplest option and how to keep it readable.