[Haskell-cafe] A question about data declaration

C K Kashyap ckkashyap at gmail.com
Fri Mar 22 07:56:37 CET 2013


Thanks Eric and Brent,

Even with GADT, it appears that I'd need extra data definitions. I'll go
without GADT then ...

Brent, my use case is not particularly complicated. I am trying to model
the pdf spec - which says that pdf contains Objects that could of of types
Number, String, Name, Array and Dictionary - while array is list of
objects, the Disctionary is a list of tuples (Name, Object) not (Object,
Object) - hence my situation.

Regards,
Kashyap


On Thu, Mar 21, 2013 at 8:58 PM, Brent Yorgey <byorgey at seas.upenn.edu>wrote:

> On Thu, Mar 21, 2013 at 06:18:46PM +0530, C K Kashyap wrote:
> > Hi,
> >
> > I have a situation where I need to define a data type T such that
> >
> > data T = C1 Int | C2 Char | C3 T
> >
> > However, I want to enforce a constraint that C3 only allows (C2 Char) and
> > not (C1 Int). That is
>
> If C3 should only be able to hold a C2 Char, then why have it hold a T
> at all?  i.e. why not
>
>   data T = C1 Int | C2 Char | C3 Char
>
> but I suppose your real problem is probably more complicated, in which
> case I would recommend using a GADT as others have suggested.
>
> -Brent
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20130322/16dde4f5/attachment.htm>


More information about the Haskell-Cafe mailing list