Nếu tôi làm như sau trong clojureChức năng clojure có phụ thuộc theo chu kỳ cụ thể không được phép theo thiết kế hay chỉ là hành vi của người đọc?
(defn sub1a [a]
(cond
(= a 0) 0
true (sub1b (- a 1))))
(defn sub1b [a]
(cond
(= a 0) 0
true (sub1a (- a 1))))
(println (sub1a 10))
tôi nhận được lỗi sau:
java.lang.Exception: Unable to resolve symbol: sub1b in this context
Nhưng nếu tôi làm như sau:
(defn sub1a [a]
(cond
(= a 0) 0
true (- a 1)))
(defn sub1b [a]
(cond
(= a 0) 0
true (- a 1)))
(defn sub1a [a]
(cond
(= a 0) 0
true (sub1b (- a 1))))
(defn sub1b [a]
(cond
(= a 0) 0
true (sub1a (- a 1))))
(println (sub1a 10))
Nó chỉ chạy tốt.
Đây có phải là do thiết kế hay chỉ là một chức năng của cách trình đọc Clojure hoạt động?