>>791
言っている事がいまいちよく分からないが・・・

instance宣言に型シノニムが使えないのは、
次のような記述ができないのと同じ理由だと思う

data TTT = Hoge Int

eq :: (Eq a) => a -> a -> Bool -- 誤った記述
eq (Hoge x) (Hoge y) = x == y

これができないのは、実際に表示されるエラーメッセージが示すように、
型変数 a を TTT 型と推論できないからだ

これを踏まえて Eq クラスのインスタンスにした場合を考えてみると、

instance Eq TTT where
 -- (Eq a) => a -> a -> Bool
 (Hoge x) == (Hoge y) = x == y

先ほどと同じ理由で、コメント部分の型シノニムの記述は誤り

かといって、TTT -> TTT -> Bool という型シノニムは、
Eq クラスのクラスメソッド (==) の型シノニムとは異なる

従って、型シノニムを「いかようにも書きようがない」


もし質問の意図が違うのだったら申し訳ない