首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分数输入误差[haskell]

分数输入误差[haskell]
EN

Stack Overflow用户
提问于 2013-10-28 20:58:56
回答 1查看 280关注 0票数 2
代码语言:javascript
复制
No instance for (Fractional Int) arising from a use of `leap'
Possible fix: add an instance declaration for (Fractional Int)
In the first argument of `(==)', namely `leap (x)'
In the second argument of `(&&)', namely `leap (x) == 1'
In the expression: (y == 2) && leap (x) == 1

在ghci中加载文件时获取此错误

这是导致错误的函数

代码语言:javascript
复制
daysInMonth :: Int -> Int -> Int
daysInMonth y x
    | (y == 1 || y == 3 || y == 5 || y == 7 || y == 8 || y == 10 || y == 12) = 31
    | (y == 4 || y == 6 || y == 9 || y == 11) = 30
    | (y == 2) && leap(x) == 1 = 28
    | (y == 2) && leap(x) == 0 = 29
    where
    leap a = if (a / 4) == 0 then return 1 else return 0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-28 21:04:07

您正在计算a / 4,其中a (它只等于xInt)是IntInt类型不属于Fractional类型,因此没有为Int定义/

  1. 通过编写aFractional类型转换为if fromIntegral a / 4 == 0 then ...类型
  2. 或者,如果要执行“整数除法”并丢弃剩余部分,则编写if quot a 4 == 0 then ...

另外,Haskell中的return与其他语言中的return不同。在这里把它处理掉。

(也是这不是你决定闰年的方法.)

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

https://stackoverflow.com/questions/19644968

复制
相关文章

相似问题

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