;; Testing recursive tail-call function
|
|
|
|
(def! sum2 (fn* (n acc) (if (= n 0) acc (sum2 (- n 1) (+ n acc)))))
|
|
|
|
(sum2 10 0)
|
|
;=>55
|
|
|
|
(def! res2 nil)
|
|
;=>nil
|
|
(def! res2 (sum2 10000 0))
|
|
res2
|
|
;=>50005000
|
|
|
|
|
|
;; Test recursive non-tail call function
|
|
|
|
(def! sum-to (fn* (n) (if (= n 0) 0 (+ n (sum-to (- n 1))))))
|
|
|
|
(sum-to 10)
|
|
;=>55
|
|
|
|
;;; no try* yet, so test completion of side-effects
|
|
(def! res1 nil)
|
|
;=>nil
|
|
;;; For implementations without their own TCO this should fail and
|
|
;;; leave res1 unchanged
|
|
(def! res1 (sum-to 10000))
|
|
res1
|
|
;=>nil
|
|
|