)
let sort order xs = list_it (insert order) xs [];;
-----------(Const) |- c => c
----------------------(Rec) |- (Rec f) => (Rec f)
|- e1 => (fun (x1, ..., xn) -> e) |- e2 => (e'1, ..., e'n) |- e[xi <- e'i ] => v
----------------------------------------------------------------------------------(App2)
|- e1 e2 => v
let rec iter1 n f = if n=0 then (fun x -> x) else compose f (iter1 (n-1) f);;