loop
(loop [binding...] body...)
Binds like let -- the inits are sequential and the patterns destructure -- and
evaluates the body, which may (recur ...) back to the bindings with new values.
Lowers to a labels self call, so the interpreter's tail calls make the repetition
constant-stack.