apply : [`a, `b] (`a -> `b) * `a -> `b curry : [`a, `b, `c] (`a -> (`b -> `c)) -> (`a * `b -> `c) uncurry : [`a, `b, `c] (`a * `b -> `c) -> (`a -> (`b -> `c)) id_int : int -> int main : int