Hi,
Looking at the ticket [1] and a draft paper linked there [2] , I learned
that in GHC 7.8, two type family instances are considered overlapping if
the argument lists unify in the presence of infinite types.
My question is, why is this restriction necessary? A footnote in the paper
states that
This is a good question. Happily, there are at least two decent answers.
1) We're not sure that this problem cannot cause a segfault… it's just that
we've been unable to produce one when trying. Perhaps we haven't tried hard
enough.
2) The type soundness of Haskell (as implemented in GHC)