{-# LANGUAGE RankNTypes #-} main = let f:: (Num a => forall a. a -> a) -> (Int, Float) f g = (g 1, g 2.3) in print $ f ((+ 1) :: Num a => a -> a)