{-# LANGUAGE RankNTypes #-} f :: (forall a. a -> b) -> (a, a2) -> (b, b2) f g (x, y) = (g x, g y) main = print $ f show (1, 'a')