Haskell中的除法误差
在学校的最后一个小时,我们开始学习哈斯克尔。我们使用的原因是它的快速和易于使用 我开始输入标准函数,如Haskell中的除法误差,haskell,functional-programming,Haskell,Functional Programming,在学校的最后一个小时,我们开始学习哈斯克尔。我们使用的原因是它的快速和易于使用 我开始输入标准函数,如*,+。。。 但这种划分并不起作用。我尝试了5/2或4/2,得到了以下消息: "Type error in infix application expression : 3 / 5 operator : / type : Float -> Float -> Float does not match : Int -&g
*
,+
。。。
但这种划分并不起作用。我尝试了5/2
或4/2
,得到了以下消息:
"Type error in infix application
expression : 3 / 5
operator : /
type : Float -> Float -> Float
does not match : Int -> Int -> a "
如何使用除法运算符从5/2
获取2.5
我尝试了
div52
,但后来我得到了2
,而不是2.5
错误消息说/
需要浮点(“实数”)数字,而您提供的是整数
您可以将参数显式设置为浮点:5.0/2.0
您可以将值转换为浮点(适用于GHC,未尝试):
按照
- 数字文字不会重载(即使在使用
标志时也是如此)。因此,--overloading
属于3
类型,而Int
属于3.0
类型。因此,您永远无法编写Float
,尽管在重载模式下,您可以同时编写2+2.3
和2+3
2.0+3.0
- 有五个内置类型类,具有以下实例:
- 数值:
,Int
Float
- 数值:
5.0/2.0
值得注意的是,在Haskell本身(氦只是Haskell的一个子集)中,
5/2
表达式的类型很好,将具有分数a=>a
,但氦似乎根本没有分数
类型,只有Int
和浮点
作为数字类型,所以,实际上有效的Haskell,会像你们所期望的那样,在氦中不起作用
如果您使用的是氦气,您可能会按照网站说明使用cabal
安装氦气:
> cabal install helium lvmrun
然后您应该可以访问GHC和GHCi。尝试将GHCi作为交互式shell运行,看看这是否有帮助。您可能会遇到比Hemium更难阅读的错误,但Haskell的类型错误在绝大多数情况下都是非常有用的。FYI,
div
函数应该是整数除法,而不是浮点除法,这是两个独立且完全有用的东西。感谢您的解释。我明白了,它现在起作用了。
> cabal install helium lvmrun