let p = fn x -> fn xs -> pair x xs in let list = p 1 (p 2 (p 3 (p 0 (p 4 (p 5 Unit))))) in let mult = fn xs -> fn k -> begin set (triple 1 xs Unit); while isPair (snd3 get) do begin let r = fst3 get in let xs = snd3 get in let o = thd3 get in let n = fst xs in let ys = snd xs in if n==0 then k 0 else set (triple (r*n) ys (o ++ " " ++ n)) end; fst3 get end in let result = callcc (fn k -> mult list k) in get