factorial = proc (n: int) returns (int) signals (negative) if n<0 then signal negative elseif n=0 then return(1) else return(n * factorial(n-1)) end end factorial start_up = proc () po: stream := stream$primary_output() for i: int in int$from_to(0, 10) do fac: int := factorial(i) stream$putl(po, int$unparse(i) || "! = " || int$unparse(fac)) end end start_up