diff options
author | Leo Tenenbaum <pommicket@gmail.com> | 2019-10-21 11:09:07 -0400 |
---|---|---|
committer | Leo Tenenbaum <pommicket@gmail.com> | 2019-10-21 11:09:07 -0400 |
commit | 9d1960f4cd0e1a78abfecce4d5bfa4d850955852 (patch) | |
tree | 89622e6011aee006e017537d2251be21f8d71f37 /test.toc | |
parent | 965d5dee1fe6cd28ad92d7f5007c90b6d7d2ff58 (diff) |
compile time recursion
Diffstat (limited to 'test.toc')
-rw-r--r-- | test.toc | 36 |
1 files changed, 4 insertions, 32 deletions
@@ -5,40 +5,12 @@ puti @= fn(x: int) { #C("printf(\"%ld\\n\", (long)x)"); }; -// foo @= fn(x:int) int { -// if x < 4 { -// return 7; -// } else { -// return 5; -// } -// 4 -// }; -foo @= fn(x: int) int { - C := new(int, x); - i := 0; - while i < x { - C[i] = i; - i = i + 1; - } - total := 0; - i = 0; - while i < x { - total = total + C[i]; - i = i + 1; - } - total - +factorial @= fn(x: int) int { + if x == 0 { 1 } else { x * factorial(x-1) } }; main @= fn() { - A : [foo(10)]int; - B : [foo(100)]int; - // C := new(int, 10); - // i := 0; - // while i < 10 { - // C[i] = 7; - // i = i + 1; - // } - // puti(C[9]); + a342 : [factorial(5)]int; + puti(factorial(20)); }; |