作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Haskell 中,这有效:
ghci>5/2
2.5
Main> let a = 5
Main> let b = 2
Main> a/b
<interactive>:68:2:
No instance for (Fractional Integer)
arising from a use of `/'
Possible fix: add an instance declaration for (Fractional Integer)
In the expression: a / b
In an equation for `it': it = a / b
Main>
*Main> fromInteger a / fromInteger b
2.5
*Main>
最佳答案
这是monomorphism restriction在上类。 a
的类型和 b
默认为 Integer
,显然不能与 /
一起使用因为它只适用于 Fractional
类型。
您可以通过在定义 a
时添加类型注释来解决此问题。和 b
:
> let a = 5 :: Double
> let b = 2 :: Double
> a / b
2.5
Double
的十进制文字:
> let a = 5.0
> let b = 2.0
> a / b
2.5
let a = 5; b = 2 in a / b
let a = 5
时应用默认值。精选
Integer
因为那时对
a
的唯一约束是
Num
.它不知道
Fractional
为了使用
/
我们需要的约束以后用它。
关于haskell - 了解为什么 a/b 不起作用,但 fromInteger a/fromInteger b 起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16244612/
我是一名优秀的程序员,十分优秀!