diff --git a/jolt-core/clojure/core/20-coll.clj b/jolt-core/clojure/core/20-coll.clj index cce15e5..d201fda 100644 --- a/jolt-core/clojure/core/20-coll.clj +++ b/jolt-core/clojure/core/20-coll.clj @@ -209,17 +209,6 @@ (defn rationalize [x] x) ;; trampoline: repeatedly calls f with args until a non-function result. -(defn trampoline - ([f] - (let [ret (f)] - (if (ifn? ret) - (recur ret) - ret))) - ([f & args] - (let [ret (apply f args)] - (if (ifn? ret) - (recur ret) - ret)))) ;; rand-int: random integer in [0, n). Uses Janet math/random. diff --git a/src/jolt/core.janet b/src/jolt/core.janet index c81508e..52f6fc6 100644 --- a/src/jolt/core.janet +++ b/src/jolt/core.janet @@ -1404,6 +1404,10 @@ # subvec lives in the Clojure kernel tier — core/00-kernel.clj. +(defn core-trampoline [f & args] + (var result (apply f args)) + (while (function? result) (set result (result))) + result) (def core-format (fn [fmt & args] (string/format fmt ;args))) # ============================================================