Haskell实例化Num时的"冲突定义"



我已经开始让我的类型类成为Num.的实例

data Interval  = IV (Int,Int)
| Empty
instance Num Interval where
(+) Empty _ = Empty
(*) Empty _ = Empty
(+) _ Empty = Empty
(*) _ Empty = Empty

当我测试到目前为止编写的+*的定义时,我总是得到错误:

Conflicting definitions for ‘+’

在定义操作时,需要在开始下一个操作之前完全定义一个操作。

因此,首先定义(+),然后定义(*),依此类推。这应该可以解决您的问题。

instance Num Interval where
(+) Empty _ = Empty
(+) _ Empty = Empty
(*) Empty _ = Empty
(*) _ Empty = Empty

您需要定义您的IV(Int, Int)。对于加法(+),不要将其附加到末尾,而是将其添加到加法的现有定义中。

相关内容

最新更新