Slighlty confusing error message with data families
Example code:
data family T a
foo :: T a -> a
foo (Just x) = x
Error message:
Couldn't match expected type `T a' against inferred type `Maybe a1'
NB: `T' is a type function
In the pattern: Just x
In the definition of `foo': foo (Just x) = x
Calling T
a type function is confusing, I had to double check that I hadn't accidentally declared it as a type family. I would
- call these things type families and data families in messages and
- omit the message for data families altogether because it doesn't matter that
T
is one in this case.
Trac metadata
Trac field | Value |
---|---|
Version | 6.13 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |