Why not this?data Pair = forall a. Eq a => Pair {x::a, y::a}equal :: Pair -> Bool equal (Pair x y) = x == y