14 lines
427 B
Plaintext
14 lines
427 B
Plaintext
|
(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)))
|
||
|
|