标签: clojure functional-programming
我有这段代码:
(ns mylib-clojure.core) (defn doWhatever2 [x] (doWhatever1 x)) (defn doWhatever1 [x] (inc x))
除非我将doWhatever1函数定义移到doWhatever2之上,否则此代码不起作用。由于我处于相同的命名空间,所以我必须这样做很奇怪。有没有办法在命名空间中声明我的函数而不必考虑订单?
doWhatever1
doWhatever2
答案 0 :(得分:10)
Clojure编译器执行单次传递,因此顺序很重要。
Clojure提供了一种指定前向声明的方法:
(declare doWhatever1)
请参阅clojure.core/declare