Claus Reinke:
type family F a :: * -> *
F x y ~ F u v <=> F x ~ F u /\ y ~ v
why would F x and F u have to be the same functions?
shouldn't it be sufficient for them to have the same result,
when applied to y and v, respectively?
Oh, yes, that is sufficient and exactly what is meant by F x ~ F
u. It means, the two can be unified modulo any type instances and
local given equalities.
sorry, i don't understand how that could be meant by 'F x ~ F u';
that equality doesn't even refer to any specific point on which these
two need to be equal, so it can only be a point-free higher-order
equality, can't it?
the right-to-left implication is obvious, but the left-to-right
implication seems to say that, for 'F x' and 'F u' to be equal on
any concrete pair of types 'y' and 'u', they have to be equal on all
possible types and 'y' and 'u' themselves have to be equal.
You write 'y' and 'u'. Do you mean 'x' and 'u'? If so, why do you
think the implication indicates that x and u need to be the same?
again, i gave a concrete example of how ghc behaves as i would
expect, not as that decomposition rule would suggest.
Maybe you can explain why you think so. I didn't understand why you
think the example is not following the decomposition rule.
Manuel
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe