Wolfgang Jeltsch wrote:
Hello everybody,
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). I don't really understand this
since in my opinion it is clear that bool :: Bool and integer :: Integer and
that therefore bool and integer are showable. What's the problem with my
code?
Best wishes,
Wolfgang
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.
Changing the definition of Pair made it compile and run with ghc:
> data Pair :: (* -> *) -> * where
> Pair :: (Show b) => a b -> b -> Pair a
--
Chris
_______________________________________________
Haskell mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell