为什么Haskell中没有Nums Ords?

时间:2013-02-04 16:05:33

标签: haskell typeclass

我知道,对于具有Num类型类实例的类型,必须有EqShow

中的一个
class (Eq a, Show a) => Num a

我想知道为什么要Eq而不是Ord。数值类型在Eq但不在Ord中是否有意义?

2 个答案:

答案 0 :(得分:35)

例如,复数可以加,减,乘和测试相等,但不是有序的。请参阅基础中的Data.Complex中的Complex a

答案 1 :(得分:22)

请注意,EqShow约束也被广泛认为是错误的。例如,对于包含函数的事物,它们会阻止Num的完全有效的实例。在最新版本的GHC中,这些约束也被删除,使Num完全没有超类约束。