{-# LANGUAGE ExplicitForAll #-} module Bug973 where showRead :: forall a b. (Show a, Read b) => a -- ^ this gets turned into a string... -> b -- ^ ...from which this is read showRead = read . show -- | Same as 'showRead', but with type variable order flipped showRead' :: forall b a. (Show a, Read b) => a -- ^ this gets turned into a string... -> b -- ^ ...from which this is read showRead' = read . show