"deriving" seems to ignore class context for a type family
class Foo a where
data Bar a :: *
class (Show (Bar a)) => Qux a
data (Qux a) => Xyzzy a = Xyzzy (Bar a) deriving Show
Here I get the following error:
No instance for (Show (Bar a))
arising from the 'deriving' clause of a data type declaration
Possible fix:
add an instance declaration for (Show (Bar a))
or use a standalone 'deriving instance' declaration,
so you can specify the instance context yourself
When deriving the instance for (Show (Xyzzy a))
Curiously, I get the same error even if I add ", Show (Bar a)" to the context of "Xyzzy".
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.0.2 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler (Type checker) |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |