>>700
>次の方法でも似たようなことができる事が分かりました。
そのコードならTypeFamilies拡張要らないな
>>699の場合ではConstrという関連型を宣言するのに必要だった

>g :: (X t) => t
>g = f 7
>
>という使い方をすれば B の f ではなく、A の f だとみなされると嬉しいです。
これは無理だと思う。fの型は
f :: (C c p, p t) => Int -> t
だけど、gの型シグネチャからは(X t)から(p t)が言えることが要請されるだけで、
p=Xが確定する訳じゃないので、情報が足りない