GHC complains about missing instance in conjunction with GADTs
I wanted to do something like that:
data Pair :: (* -> *) -> * where
Pair :: a b -> b -> Pair a
data Sel :: * -> * where
A :: Sel Bool
B :: Sel Integer
showSnd :: Pair Sel -> String
showSnd (Pair A bool) = show bool
showSnd (Pair B integer) = show integer
However, GHC 6.4.1 with -fglasgow-exts complains in the second last and last line that there is no instance for (Show b). But it is clear that bool :: Bool and integer :: Integer and that therefore bool and integer are showable. In addition, Chris Kuklewicz said the following:
I cut and pasted your code into ghci-6.4.2 with -fglasgow-exts and there was no
error. And I can (print (showSnd (Pair A True)) and (print (showSnd (Pair B 8))) but when I try to compile it with ghc-6.4.2 it complains about the Show instance. I find this deeply wierd, and it seems like a bug.
Trac metadata
Trac field | Value |
---|---|
Version | 6.4.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |