id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	os	architecture	failure	difficulty	testcase	blockedby	blocking	related
2994	give better error messages for instance declarations with the wrong number of parameters	rwbarton		"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."	feature request	closed	normal		Compiler	6.11	fixed			Unknown/Multiple	Unknown/Multiple		Unknown	typecheck/should_fail/T2994			
