如果我们在创建数据类型时派生Ord而不是Eq会发生什么?

Pra*_*nki 3 haskell

我理解在haskell中如果我们创建一个数据类型派生Ord它也应该派生Eq,但为什么我们必须在定义中明确地写出它们?

Dan*_*ner 5

人们可以合理地推导出来Ord但是Eq手工实例化:

data Foo = Foo deriving Ord
instance Eq Foo where
    _ == _ = True
Run Code Online (Sandbox Code Playgroud)

我不能想到这个有用的地方,但是没有理由阻止它.