>>53
a and (a,b) can be constrained to be the same.
>>54
fix. Haskell has it built in because you can't express it using its puny non-recursive type system.
>>56
a = (a,b) = ((a,b),b) = (((a,b),b),b) = ...
It's natural enough for me. Maybe it's just too much for you, being a goy and all.