mirror of
https://github.com/kanaka/mal.git
synced 2024-09-21 02:27:10 +03:00
8a19f60386
- Reorder README to have implementation list after "learning tool" bullet. - This also moves tests/ and libs/ into impls. It would be preferrable to have these directories at the top level. However, this causes difficulties with the wasm implementations which need pre-open directories and have trouble with paths starting with "../../". So in lieu of that, symlink those directories to the top-level. - Move the run_argv_test.sh script into the tests directory for general hygiene.
24 lines
400 B
Plaintext
24 lines
400 B
Plaintext
;; Testing recursive tail-call function
|
|
|
|
(def! sum2 (fn* (n acc) (if (= n 0) acc (sum2 (- n 1) (+ n acc)))))
|
|
|
|
;; TODO: test let*, and do for TCO
|
|
|
|
(sum2 10 0)
|
|
;=>55
|
|
|
|
(def! res2 nil)
|
|
;=>nil
|
|
(def! res2 (sum2 10000 0))
|
|
res2
|
|
;=>50005000
|
|
|
|
|
|
;; Test mutually recursive tail-call functions
|
|
|
|
(def! foo (fn* (n) (if (= n 0) 0 (bar (- n 1)))))
|
|
(def! bar (fn* (n) (if (= n 0) 0 (foo (- n 1)))))
|
|
|
|
(foo 10000)
|
|
;=>0
|