Ticket #2994 (closed feature request: fixed)
give better error messages for instance declarations with the wrong number of parameters
Description
Consider the following erroneous program which tries to define an instance of MonadReader.
import Control.Monad.Reader newtype Reader' r a = Reader' (r -> a) instance MonadReader (Reader' r)
This instance declaration is wrong, because the MonadReader type class has two parameters. But ghc's error message is not very helpful:
/tmp/err.hs:5:21:
`Reader' r' is not applied to enough type arguments
Expected kind `*', but `Reader' r' has kind `* -> *'
In the instance declaration for `MonadReader (Reader' r)'
While if I give too many arguments, e.g., instance MonadReader r r (Reader' r), I always get a good error message, even if the kinds of some of the leading types are wrong:
Kind error: `MonadReader' is applied to too many type arguments
In the instance declaration for `MonadReader r r (Reader' r)'
So it'd be great if the error message for giving too few type arguments could be more like that one.
Change History
Note: See
TracTickets for help on using
tickets.
