1
1
mirror of https://github.com/kanaka/mal.git synced 2024-09-19 09:38:28 +03:00
mal/impls/tests/step5_tco.mal
Joel Martin 8a19f60386 Move implementations into impls/ dir
- 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.
2020-02-10 23:50:16 -06:00

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