{-# OPTIONS -fglasgow-exts #-} f :: Maybe (forall a. [a] -> [a]) -> Maybe ([Int], [Char]) f (Just g) = Just (g [3], g "hello") f Nothing = Nothing main = print $ f (Just reverse)