从运算符推断类型类

foo*_*bar 3 haskell overloading type-inference typeclass

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

> let add x y = x + y
> :t add
add :: Num a => a -> a -> a
Run Code Online (Sandbox Code Playgroud)

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

sep*_*p2k 9

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

如果你导入多个定义的模块+(无论它是否是类型类的一部分),你需要+在导入除了其中一个之外的所有模块时隐藏,只导入其中一个作为限定条件或总是引用+限定条件.