aboutsummaryrefslogtreecommitdiff
path: root/tests/step5_tco.mal
blob: 9054c7466aa907ff28ff09626557b9afbdfc90b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
;; 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
(def! res1 (sum-to 10000)))
res1
;=>nil

;; 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