Groundwork for Tail Call Elimination. Prints out when it should happen, but doesn't actually do it

This commit is contained in:
Nathan Braswell
2022-05-11 00:59:41 -04:00
parent 20c46af986
commit 50d68c3424
2 changed files with 54 additions and 43 deletions

View File

@@ -15,12 +15,15 @@
(let (
rec-lambda (vau se (n p b) (eval (array Y (array lambda (array n) (array lambda p b))) se))
fact (rec-lambda fact (n) (cond (= 0 n) 1
(= 1 n) 1
true (band #xFFFFFF (* n (fact (- n 1))))))
;fact (rec-lambda fact (n) (cond (= 0 n) 1
; (= 1 n) 1
; true (band #xFFFFFF (* n (fact (- n 1))))))
fact (rec-lambda fact (n r) (cond (= 0 n) r
(= 1 n) r
true (fact (- n 1) (band #xFFFFFF (* n r)))))
monad (array 'write 1 "hao" (vau (written code)
(array 'exit (log (fact (log 10000))))
(array 'exit (log (fact (log 10000) 1)))
))