有没有办法在 Clojure 中定义一个自动进行尾调用优化的函数?
例如
(defrecur fact [x]
(if (= x 1)
1
(* x (fact (dec x)))))
将在内部翻译为:
(defn fact [x]
(loop [n x f 1]
(if (= n 1)
f
(recur (dec n) (* f n)))))
你能告诉我这样的东西是否已经存在吗?