let 0 = fun f -> fun init -> init in let +1 = fun n -> fun f -> fun init -> f (n f init) in let 1 = +1 0 in let 2 = +1 1 in let 3 = +1 2 in let 4 = +1 3 in let 5 = +1 4 in let print_n = fun n -> n (fun accumulator -> print foo accumulator) (fun x -> x) in let + = fun n -> fun n' -> n +1 n' in let * = fun n -> fun n' -> n (n' +1) 0 in print_n (* 4 3)