我知道对于具有类型类实例的Num
类型,必须有一个 fromEq
和Show
class (Eq a, Show a) => Num a
我想知道为什么需要它Eq
而不是Ord
. Eq
数字类型在 in但不在 in是否有意义Ord
?
例如,复数可以进行加法、减法、乘法和相等性测试,但不能排序。请参阅Complex a
基础中的 Data.Complex。
请注意,Eq
andShow
约束也被广泛认为是错误特征。例如,它们会阻止Num
包含函数的事物的完全有效实例。在最新版本的 GHC 中,这些约束也被删除,Num
完全没有超类约束。