相互に再帰的に呼び出す 2 つの関数を 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