f : int -> int boxed_f : f apply_boxed_f : [`a, `b] f<`a, `b> * `a -> `b main : int