[Haskell] deriving Show for GADT?

Ryan Ingram ryani.spam at gmail.com
Tue Apr 14 02:03:00 EDT 2009


You might be able to write some Template Haskell to derive the Show instance.

It's a bit tricky, because there are some types which can't have Show
derived, such as:

data Foo where
    Broken :: a -> Foo

What should
    show (Broken id)
do?

  -- ryan

On Mon, Apr 13, 2009 at 9:28 PM, Norman Ramsey <nr at cs.tufts.edu> wrote:
> I've got a fairly large GADT for which I wished to use
>   deriving (Show)
> but I got a mysterious error message:
>
> Exp.hs:13:11:
>    Can't make a derived instance of `Show (Exp a)'
>      (`Exp' has non-Haskell-98 constructor(s))
>    In the data type declaration for `Exp'
>
>
> This is from GHC.  Does anybody know a compiler option or other trick
> that will coax the compiler into producing a Show instance.
> (I know I can write one by hand, but I'd rather not bother.)
>
>
> Norman
> _______________________________________________
> Haskell mailing list
> Haskell at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell
>


More information about the Haskell mailing list