Haskell - 添加类型类?

标签 haskell operator-overloading typeclass

考虑以下示例:

data Dot = Dot Double Double
data Vector = Vector Double Double

首先,我想重载+ Vector 的运算符添加。如果我想重载相等(==)运算符,我会这样写:
instance Eq Vector where ...blahblahblah

但是找不到有没有Add要制作的类型类 Vector表现得像具有加法运算的类型。我什至找不到 Haskell 类型类的完整列表,我只知道不同教程中的几个。这样的 list 存在吗?

另外,我可以重载+吗?添加运算符 VectorDot (这似乎很合乎逻辑,不是吗?)。

最佳答案

发现有关函数属于哪个类型类(如果有)的信息的一种简单方法是使用 GHCi:

Prelude> :i (+)
class (Eq a, Show a) => Num a where
  (+) :: a -> a -> a
  ...
        -- Defined in GHC.Num
infixl 6 +

关于Haskell - 添加类型类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6883200/

相关文章:

haskell - Lisp 有类似 Haskell 的 takeWhile 函数吗?

c# - 双向隐式运算符重载的模式名称和接口(interface)

c++ - 模板结构中的重载运算符

c++ - 重载的 std::ostream operator<< 未调用,流获取变量地址而不是对象

scala - 如何避免具有多个类型类关系的模棱两可的转换链?

haskell - 什么时候需要类型注释?

haskell - GHC 如何使用 Num 实例将多态数字文字转换为任意类型?

json - 具有自定义表示的 ToJSON

haskell - 根据条件对列表进行分区的函数 - Haskell

haskell - Lazy.ByteString 和 Lazy.Char8.ByteString 之间的区别