Clojure China

clojure 变量绑定问题?

#1
user=> (loop [x 5 result []]
               (do (println x result))
			(if (zero? x)
                 result
                (recur (conj result x) (dec x) )))

------------output-----------------------------------

5 []
[5] 4

ClassCastException clojure.lang.PersistentVector cannot be cast to java.lang.Num
ber  clojure.lang.Numbers.isZero (Numbers.java:92)
#2

你不都打印出来了嘛,recur 时顺序反了

#4

谢谢 :slightly_smiling:

(loop [x 5 result []]
               (do (println x result))
			(if (zero? x)
                 result
                (recur  (dec x) (conj result x))))

改成这样就对了