如果我使用 + 运算符,Haskell 会自动推断类型类 Num :

> let add x y = x + y
> :t add
add :: Num a => a -> a -> a

这是否意味着我不能使用 + 运算符拥有多个类型类?

最佳答案

在同一个模块中不能有多个定义 + 的类型类(当然这同样适用于任何其他函数名称 - 不仅仅是 + )。

如果您导入多个定义 + 的模块(无论它是否作为类型类的一部分),您要么需要在导入除其中一个以外的所有模块时隐藏 +,导入除其中之一以外的所有模块,或者始终引用 + 限定.

关于haskell - 从运算符推断类型类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7242160/

10-10 14:39