clj->janet :: loop->clj-loop

This commit is contained in:
Scott Richmond 2024-01-11 14:26:22 -05:00
parent a65b4ba873
commit f4d09afed6

13
janet/clj-loop.janet Normal file
View File

@ -0,0 +1,13 @@
(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)))