mirror of
https://github.com/krgamestudios/Toy.git
synced 2026-04-16 07:14:07 +10:00
This required a massive cross-cutting rework to the scope system, multiple subtle bugfixes and relearning of the parser internals, but it does appear that functions are working correctly. A few caveats: for now, parameters are always constant, regardless of type, return values can't be specified, and some script tests have been written. Most importantly, a key feature is working: closures.
20 lines
343 B
Plaintext
20 lines
343 B
Plaintext
|
|
fn fib(n) {
|
|
if (n < 2) return n;
|
|
return fib(n-1) + fib(n-2);
|
|
}
|
|
|
|
assert fib(1) == 1;
|
|
assert fib(2) == 1;
|
|
assert fib(3) == 2;
|
|
assert fib(4) == 3;
|
|
assert fib(5) == 5;
|
|
assert fib(6) == 8;
|
|
assert fib(7) == 13;
|
|
assert fib(8) == 21;
|
|
assert fib(9) == 34;
|
|
assert fib(10) == 55;
|
|
assert fib(11) == 89;
|
|
assert fib(12) == 144;
|
|
|
|
print "Fibonacci passed"; |