1 2 3 4 5 6 7 8
{-# LANGUAGE Rank2Types #-} module ShouldCompile where data Q = Q {f :: forall a. a -> a} g1 = f g2 x = f x g3 x y = f x y