首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何否定用户定义的Integer?

如何否定用户定义的Integer?
EN

Stack Overflow用户
提问于 2018-06-27 12:35:36
回答 1查看 322关注 0票数 0

我有过

代码语言:javascript
复制
data Weight = Fin Integer | Inf
    deriving (Eq, Ord, Show)

negate :: Weight -> Weight
negate Inf = error "negative infinity not supported"

我要negate Fin (-1) = Fin 1。所以我进一步定义

代码语言:javascript
复制
negate Fin x = Fin (0 - x)

但这会造成错误

代码语言:javascript
复制
? Equations for ‘negate’ have different numbers of arguments

我怎么才能修好它?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-27 12:38:10

模式匹配需要括号:

代码语言:javascript
复制
negate (Fin x) = Fin (0 - x)

否则,看起来你有两个论点。

这反映在错误:“方程的‘否定式’有不同数量的参数”。

这不适用于Inf,因为它不需要参数。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51062960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档