[Haskell] Re: How to define tail function for Even/Odd GADT lists?

Stefan Monnier monnier at iro.umontreal.ca
Mon May 5 04:14:24 EDT 2008


> However, we were not able to write a function that returns the tail.

>> tailList :: Flip b c => List a b -> List a c
>> tailList (Cons _ xs) = xs

The problem here is that the caller will probably not know which "Flip
b c".  OTOH the Cons of type "List a b" already contains a "Flip b c"
proof, so you really don't need to receive it.

Of course, in order to be able to write "List a c" you still need to
introduce a "c" variable somewhere.  This should be done as follows:

tailList: List a b -> (Flip b c => List a c)


-- Stefan



More information about the Haskell mailing list