, is-member recur
, mquander, recur , . ( ) , ( ).
(.. "recur" ) , .
, recur?
, ,
:
(defn foo [coll]
(when coll
(println (first coll))
(recur (next coll))) ;; OK: Tail recursive
(defn fie [coll]
(when coll
(cons (first coll)
(fie (next coll))))) ;; Can't use recur: Not tail recursive.
(defn fum
([coll]
(fum coll [])) ;; Can't use recur: Different function.
([coll acc]
(if (empty? coll) acc
(recur (next coll) ;; OK: Tail recursive
(conj acc (first coll))))))
, recur , : , , - ( recur).
"" " StackOverflowError", , , - , , - , .
source
share