NamedWildcardsNotInMonotype.hs:5:1: error: • Could not deduce (Eq w0) from the context: (Show a, Eq w, Eq a) bound by the inferred type for ‘foo’: (Show a, Eq w, Eq a) => a -> a -> String at NamedWildcardsNotInMonotype.hs:5:1-33 The type variable ‘w0’ is ambiguous • In the ambiguity check for the inferred type for ‘foo’ To defer the ambiguity check to use sites, enable AllowAmbiguousTypes When checking the inferred type foo :: forall w a. (Show a, Eq w, Eq a) => a -> a -> String