我试图弄清楚类型类的目的,如果不使用类型类还有什么。
类型类是定义多态函数的一种方式吗?
类型类是定义多态函数的唯一方法吗?例如:
class Eq a where
(==), (/=) :: a -> a -> Bool
x /= y = not (x == y)
instance Eq Bool where
False == False = True
True == True = True
_ == _ = False
我可以在不使用 type class 的情况下定义==
and /=
for Bool
(以及任何其他类型)Eq
吗?
如果有任何其他方式,我什么时候应该使用哪种方式来定义多态函数,使用类型类还是使用其他方式?