Improve type mismatch error messages
Generating better type-error messages is a hoary chestnut, but Herbert brought my attention to this thread on reddit, which has the following idea.
At the moment, from
module Foo where
addThree = \x -> x + 3 :: Int
y = addThree $ Just 5
we get this error:
Foo.hs:2:20
Couldn't match expected type `Int' with actual type `Maybe a0'
In the return type of a call of `Just'
In the second argument of `($)', namely `Just 5'
In the expression: addThree $ Just 5
Maybe we could generate this instead
Foo.hs:2:20
inferred: "Just 5" has type "Maybe a0"
expected: second argument of "($)" must have type "Int"
in the expression: addThree $ Just 5
Trac metadata
Trac field | Value |
---|---|
Version | 7.8.2 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |