18

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

class (Eq a, Show a) => Num a

我想知道为什么需要它Eq而不是Ord. Eq数字类型在 in但不在 in是否有意义Ord

4

2 回答 2

35

例如,复数可以进行加法、减法、乘法和相等性测试,但不能排序。请参阅Complex a基础中的 Data.Complex。

于 2013-02-04T16:08:48.413 回答
22

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

于 2013-02-04T16:23:29.087 回答