% Ackermann function ack = proc (m, n: int) returns (int) if m=0 then return(n+1) elseif n=0 then return(ack(m-1, 1)) else return(ack(m-1, ack(m, n-1))) end end ack % Print a table of ack( 0..3, 0..8 ) start_up = proc () po: stream := stream$primary_output() for m: int in int$from_to(0, 3) do for n: int in int$from_to(0, 8) do stream$putright(po, int$unparse(ack(m,n)), 8) end stream$putl(po, "") end end start_up