This is a question about some interesting behaviors in GHC's
typechecker regarding MPTCs. The brief code is at the bottom of the
message. By the way, the types can be inferred but not declared
without the forall and ascription in the where clause.
f1 below is illegal because we don't know what ty
If f2 is legal, why if f3 illegal? For some usage site of f3, the
constraint C String b might allow b to be resolved given whatever
instances of C are in effect.
Is there a motivation for these behaviors?
Are these sorts of cases discussed in the CHR/FD paper that motivated
the coverage conditio