[Haskell-cafe] Re: [Haskell] How to define tail function for
Even/Odd GADT lists?
David Roundy
daveroundy at gmail.com
Wed Apr 23 20:07:18 EDT 2008
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
<iavor.diatchki at gmail.com> 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 <daveroundy at gmail.com> wrote:
> > 2008/4/23 Martijn Schrage <martijn at cs.uu.nl>:
> >
> > > 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 at haskell.org
> > http://www.haskell.org/mailman/listinfo/haskell-cafe
> >
>
More information about the Haskell-Cafe
mailing list