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
Tis 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 |