(* Polymorphic version: An Ill-Typed Module (type error) *) let ap (f: `a -A> `b) x = f x let inc2 y = let g = ap ((+) 1) in g (g y) (* g: (int -o int) is used twice here *) in print (inc2 5)