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 <byor...@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@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to