Slighlty confusing error message with data families
data family T a foo :: T a -> a foo (Just x) = x
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
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.