summaryrefslogtreecommitdiff
path: root/test.toc
diff options
context:
space:
mode:
authorLeo Tenenbaum <pommicket@gmail.com>2019-10-21 11:09:07 -0400
committerLeo Tenenbaum <pommicket@gmail.com>2019-10-21 11:09:07 -0400
commit9d1960f4cd0e1a78abfecce4d5bfa4d850955852 (patch)
tree89622e6011aee006e017537d2251be21f8d71f37 /test.toc
parent965d5dee1fe6cd28ad92d7f5007c90b6d7d2ff58 (diff)
compile time recursion
Diffstat (limited to 'test.toc')
-rw-r--r--test.toc36
1 files changed, 4 insertions, 32 deletions
diff --git a/test.toc b/test.toc
index 42c8a36..7ccd36c 100644
--- a/test.toc
+++ b/test.toc
@@ -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));
};