-- type Cont = State -> Ans
-- type Step = Cont -> Cont
-- in this toy example, State = Int and Ans = String, very simple
let
finish s = "Answer is " @ itos(s) -- finish :Cont
and
increment c s = c (s+1) -- increment :Step
and
double c s = c (2*s) -- double :Step
and
factorial c s = if s>=0 then -- factorial :Step
let rec f 0 = 1 ||
f n = n*f(n-1)
in c (f s) -- usual action
else "factorial error" -- exceptional case
in increment( double( factorial finish )) 1 -- note order !!!
-- ((1+1)*2)!
--\fB Example of use of continuations. \fP