Nat.ml1 2 3 4 5 6 7 8 9 10 11 12 13open Functional let zero = 0 let succ n = n + 1 let fold n zero_case succ_case = if n <= 0 then zero_case else let rec _visit n return = match n with | 0 -> return zero_case | _ -> _visit (n - 1) (return <== succ_case) in _visit n identity