"Unlikely constraint" recognition
Some constraints or combinations are relatively unlikely to appear in correct code, or at least correct code written by beginners. A few tiny examples:
(Integral a, Fractional a) => -- Possible, but rare, in correct code. (Integral a, RealFloat a) => -- Rather less possible in correct code. (Num a, Foldable a) => -- Possible, but unlikely for a beginner. (Fractional [a]) => (Show (A -> B)) =>
The current error messages when constraints like these are not satisfied does nothing to suggest that they are unlikely to be correct or to explain to a beginner what kinds of mistakes can lead to errors like this. I imagine some people who teach classes using Haskell will have an idea of which specific things are worth singling out for a special explanation.
|Component||Compiler (Type checker)|