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

Reply via email to