def dip { swap >r call r> } def keep { over >r call r> } def if { ? call } def fib/aux { if: dig dup 0 = [drop drop] [bury [swap 1 - swap] dip dup [+] dip swap fib/aux] ; } def fib { 0 1 fib/aux } [ 50 fib ] call \=> 12586269025