let var = do $FP + end, putendl = (10 putchar), test = fn(x: %int, y: %int) -> %(%int, %int) do x@ y@ * x@ y@ + end, protofib = fn(a: %int, b: %int) -> %(%int, %int) do b@ putnum putendl b@ a@ b@ + end, fact = fn(n: %int) -> %int do get %int let acc = (1 var) in 1 acc= while (n@) do n@ acc@ * acc= n dec end acc@ end dump %int end, fib = fn(n: %int) -> %void do get %(%int, %int) let a = (1 var), b = (2 var) in 0 a= 1 b= while (n@) do a@ b@ protofib b= a= n dec end end dump %(%int, %int) end in 20 fib putendl 5 fact putnum putendl end