Frederik Eaton writes:
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.
I'm not sure I understand this, but the intent was that you'd use e.g. TCons instead of the tuple syntax in instance declarations.
Currently, '(,)' is a type constructor of kind * -> * -> * and '(a,b)' is sugar for '(,) a b'. That means we can partially apply '(,)' in instance declarations, for example: instance Functor ((,) a) where fmap f (x,y) = (x, f y) If we get rid of '(,)' and redefine '(a,b)' as sugar for 'TCons a (TCons b HNil)' (or whatever), then there is no way to declare the above instance. I don't think that's a deal-killer, but it is a disadvantage. -- David Menendez <zednenem@psualum.com> <http://www.eyrie.org/~zednenem/>