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"