我有
data Weight = Fin Integer | Inf
deriving (Eq, Ord, Show)
negate :: Weight -> Weight
negate Inf = error "negative infinity not supported"
我想要negate Fin (-1) = Fin 1
。所以我进一步定义
negate Fin x = Fin (0 - x)
但这会导致错误
? Equations for ‘negate’ have different numbers of arguments
我该如何解决?谢谢!
答案 0 :(得分:3)
您需要使用方括号来进行模式匹配:
negate (Fin x) = Fin (0 - x)
否则,您似乎有两个参数。
这反映在错误中:““求反”的方程具有不同数量的参数”。
这不适用于Inf
,因为它没有参数。