[Haskell-cafe] No instance for (Constructor Main.D1MyData)

José Pedro Magalhães jpm at cs.uu.nl
Tue Dec 10 16:34:49 UTC 2013

Hi Maarten,

On Tue, Dec 10, 2013 at 3:48 PM, Maarten Faddegon <
haskell-cafe at maartenfaddegon.nl> wrote:

> Dear list,
>  -- | Meta-information (constructor names, etc.)
>> instance (GToonbaar a, Constructor c) => GToonbaar (M1 i c a) where
This is not good; an instance of |Constructor c| will only be available
when your |M1 i c a| is
actually |M1 C c a| (so |i ~ C|). In the other cases (that is, when |i| is
either |D| or |S|), that
instance will not exist (there will be |Datatype| and |Selector| instances,

You can find a generic show using GHC.Generics here:

>> -- | Sums: encode choice between constructors
>> instance (GToonbaar a, GToonbaar b) => GToonbaar (a :+: b) where
>>         gtoon x = gtoon x
This will cause your code to loop, btw.

>> When I try to compile the above, ghc emits the following error:
>     No instance for (Constructor Main.D1MyData)
>       arising from a use of `Main.$gdmtoon'
>     Possible fix:
>       add an instance declaration for (Constructor Main.D1MyData)
>     In the expression: (Main.$gdmtoon)
>     In an equation for `toon': toon = (Main.$gdmtoon)
>     In the instance declaration for `Toonbaar MyData'

It's not the most beautiful of errors, but it does say that there is no
instance for |D1MyData|, and |D1MyData| is the automatically generated
to encode the *datatype* meta-information for |MyData|.

Hope that helps,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20131210/2e452396/attachment.html>

More information about the Haskell-Cafe mailing list