On Wed, 23 Apr 2008, Iavor Diatchki wrote:
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)
Or just use:
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
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
I presume the point was to allow the writing of functions that accept
either list type, such as
sort :: List a evenorodd - List a evenorodd
or similar.
David
On Wed, Apr 23, 2008 at 7:55 PM, Iavor DiIatchki
[EMAIL PROTECTED] wrote:
Hello,
I am not sure of the use case here but you could