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
Unfortunately, this isn't supported at present. --Ben On 14 Apr 2009, at 05:28, Norman Ramsey 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@haskell.org http://www.haskell.org/mailman/listinfo/haskell
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@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@haskell.org http://www.haskell.org/mailman/listinfo/haskell
I seem to recall Matt Morrow having some code lying around for automatically generating such instances using haskell-src-exts. I wonder how hard it would be to adapt to Template Haskell. -Edward Kmett On Tue, Apr 14, 2009 at 2:03 AM, Ryan Ingram <ryani.spam@gmail.com> wrote:
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@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@haskell.org http://www.haskell.org/mailman/listinfo/haskell
_______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell
Norman Ramsey <nr <at> cs.tufts.edu> writes:
I've got a fairly large GADT for which I wished to use deriving (Show)
You will have to write one by hand. I tend to use Text.Pretty and then the output is much more readable. It doesn't take long even for a what I would consider a large GADT.
participants (5)
-
Ben Moseley -
Dominic Steinitz -
Edward Kmett -
nr@cs.tufts.edu -
Ryan Ingram