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

Reply via email to