RosettaCodeData/Task/Mutual-recursion/Forth/mutual-recursion.fth

16 lines
330 B
Forth

defer m
: f ( n -- n )
dup 0= if 1+ exit then
dup 1- recurse m - ;
:noname ( n -- n )
dup 0= if exit then
dup 1- recurse f - ;
is m
: test ( xt n -- ) cr 0 do i over execute . loop drop ;
' m defer@ 20 test \ 0 0 1 2 2 3 4 4 5 6 6 7 7 8 9 9 10 11 11 12
' f 20 test \ 1 1 2 2 3 3 4 5 5 6 6 7 8 8 9 9 10 11 11 12