[Haskell-cafe] tuple and HList

David Menendez zednenem at psualum.com
Sun Mar 20 12:02:26 EST 2005


John Meacham writes:

> This was brought up in passing in a recent conversation on
> haskell-cafe
> 
> http://www.haskell.org//pipermail/haskell-cafe/2005-March/009321.html
> 
> It certainly seems like an interesting idea, Would type inference
> still work okay? 
> 
> The other problem mentioned is that they are not quite isomorphic,
> since HLists are equivalant to (a,(b,c)) rather than (a,b,c), but
> changing HCons so that it is strict in its second argument makes them
> behave the same I think..

Since most of the HList functionality is defined using type classes, we
could probably declare a new type, TCons, make it strict in the second
argument, and use it alongside HCons.

    data TCons a b = TCons a !b

One way t make tuples into sugar for HLists would be to effectively have
a series of declarations like these:

    type (a,b)   = TCons a (TCons b HNil)
    type (a,b,c) = TCons a (TCons b (TCons c HNil))

But then we can't use tuples in instance declarations. That is, there
isn't any way to desugar 'instance Functor ((,) a)' without using a type
lambda.

On the other hand, using HLists for tuples means we can have projection
functions that work on any tuple arity, which would be nice.
-- 
David Menendez <zednenem at psualum.com> <http://www.eyrie.org/~zednenem/>


More information about the Haskell-Cafe mailing list