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 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 > > 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