Comment Comment by macmac Clojure has both recur and trampoline which handle tail calls (in general not just with loop) and trampoline for corecursion:recur: (defn factorial ([n] (factorial n 1)) ([n acc] (if (= n 0) acc (recur (dec n) (* acc n))))) trampoline: (declare is-even?) (defn is-odd? [n] (if (zero? n) false #(is-even? (dec n)))) (defn is-even? [n] (if (zero? n) true #(is-odd? (dec n)))) (trampoline (is-odd? 10000)) parent macmac 10 years ago
recur:
trampoline: