diff options
Diffstat (limited to 'boot/tests/transpile/functions.cskt')
| -rw-r--r-- | boot/tests/transpile/functions.cskt | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/boot/tests/transpile/functions.cskt b/boot/tests/transpile/functions.cskt new file mode 100644 index 0000000..889ffb3 --- /dev/null +++ b/boot/tests/transpile/functions.cskt @@ -0,0 +1,49 @@ +all function forwards land before any function body, so +mutual recursion compiles without ordering games. +`main` is renamed to `catskill_main` and wrapped by the +runtime trailer to allow catskill programs to receive +arguments using preferred types instead of the classic +`argc` and `argv`. + +<<< + +is_even = fun (n int) bool { + if n == 0 { + return true + } + return is_odd(n - 1) +} + +is_odd = fun (n int) bool { + if n == 0 { + return false + } + return is_even(n - 1) +} + +main = fun () { + is_even(10) +} + +>>> + +#include "core.c" +bool is_even(integer n); +bool is_odd(integer n); +void catskill_main(void); +bool is_even(integer n) { + if (n == 0) { + return true; + } + return is_odd(n - 1); +} +bool is_odd(integer n) { + if (n == 0) { + return false; + } + return is_even(n - 1); +} +void catskill_main(void) { + is_even(10); +} +#include "runtime.c" |
