在clojure中双重递归

sag*_*aga 1 functional-programming clojure mutual-recursion

我有一个clojure程序,其中两个函数递归地相互调用:

(defn f1
...
(f2 ...)
)


(defn f2
...
(f1 ...)
)
Run Code Online (Sandbox Code Playgroud)

编译器发出错误f1.它说f2没有定义.有没有办法declare在clojure中使用函数.我可以验证递归实际终止.

Car*_*ate 7

字面意思declare:

(declare f2)
(defn f1 []
  (f2))

(defn f2 []
  (f1))
Run Code Online (Sandbox Code Playgroud)