Hello,
I am not sure of the use case here but you could also do the following:
data EvenList a = Nil
| ConsE a (OddList a)
data OddList a = ConsO a (EvenList a)
This does not use any type system extensions.
-Iavor
On Wed, Apr 23, 2008 at 4:46 PM, David Roundy <[EMAIL PROTECTED]> wrote:
> 2008/4/23 Martijn Schrage <[EMAIL PROTECTED]>:
>
> > It depends a bit on what you want to use these lists for, but the following
> > encoding works for your examples and doesn't need the type class.
> >
> > data E
> > data O
> >
> > type Even = (E,O)
> > type Odd = (O,E)
>
> That's a nice little trick! I like how you achieve type signatures
> relating two distinct types just by sticking them in a tuple. :)
>
> David
> _______________________________________________
> Haskell-Cafe mailing list
> [email protected]
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe