(defmacro clj-loop ``A drop-in replacement for Clojure's loop form. Useful for the current project of converting Clojure code to Janet. `` [bindings & body] (assert (even? (length bindings))) (def names @[]) (def args @[]) (loop [i :range [0 (length bindings)]] (if (even? i) (array/push names (get bindings i)) (array/push args (get bindings i)))) ~(do (defn recur [,;names] ,;body) (recur ,;args)))