Warn about unused parameters in recursive definitions
I’m correcting student’s exams right now; a good source of bad programs :-)
Consider this program:
foo _ y  = y foo z y (_:xs) = foo z y xs
It would be nice if GHC would warn that the first parameter of
foo is not used. IIRC GHC warns about unused constructors even when they occur on RHSs.
foo is passed to some higher order function that expects a particular type, removing the parameter would require a wrapper for there, or at least an anonymous lambda... but it’s probably still worth notifying the programmer, as more likely there is a bug or misunderstanding in such code.