是否可以在 clojure 中定义两个递归调用的函数?例如,这对:
(defn a [x]
(if (= 0 x) 0 (b (dec x))))
(defn b [x]
(if (= 0 x) 0 (a (dec x))))
编译失败:
Unable to resolve symbol: b in this context
因为我没有定义b
当我尝试调用它时a
。
例如,在红宝石中这很好用:
def a(x)
x == 0 ? x : b(x-1)
end
def b(x)
x == 0 ? x : a(x-1)
end