Uncurrying and Polymorphism


How do we uncurry functions when they are polymorphic? For example, is it possible to uncurry the following types? If so what is the uncurried type?

  1. $ \forall X. X \rightarrow int \rightarrow X$ ?
  2. $ int \rightarrow \forall X. X \rightarrow X$ ?
  3. $ int \rightarrow \forall X. X \rightarrow int \rightarrow X$ ?