>>791
もしかして

data TTT = Hoge Int

instance Eq (TTT, TTT) where
(Hoge x1, Hoge y1) == (Hoge x2, Hoge y2) = x1==x1 && y2==y2

こういうことが FlexibleInstances オプションをつけないと標準ではできない理由、
つまり GHC のオプション扱いになっている Haskell の言語設計思想的なこと
を訊いているのかな?

> などと一々作らないといけないのでしょうか?

ソースコードの module 宣言の前に
{-# LANGUAGE FlexibleInstances #-} を記述するか、
ghc や ghci コマンドに -XFlexibleInstances オプションを指定すればできる