我正在尝试理解Eq类,当我在阅读关于Haskell中类型的章节时,我遇到了以下问题:
"解释为什么函数类型一般不可能成为Eq类的实例。"
我试图通过检查(==)
函数的类型来理解。
:t (==)
(==) :: Eq a => a -> a -> Bool
所以a
是Eq
类的实例,但这并没有表明(==)函数是Eq类的实例,是吗?对我来说,似乎函数==的两个参数是Eq。
equal x1 x2 = x1 == x2
实际上等同于(==)。
我的理解是,对于Eq类的实例,函数类型总是不可行(我上面的例子是可行的)因为它们必须具有相同数量的参数(两个)并返回相同的类型(Bool)
虽然我不确定是否是这种情况。不清楚函数类型作为类的实例意味着什么。