作者:lksxq_468 | 来源:互联网 | 2022-10-10 08:05
我正在学习haskell,并且遇到了奇怪的行为。我试过了
Prelude> min 8.0 8
8.0
和
Prelude> max 8 8.0
8.0
我切换了两个函数的参数位置,但是得到了相同的结果。如果以最小返回8.0,则不应以最大返回8(反之亦然)吗?我正在使用ghci
8.0.2版。为什么会这样?
1> Daniel Wagne..:
双方8
并8.0
表示相同的Double
,而且Double
打印的8.0
。这与min
本身无关。
> 8 :: Double
8.0
@dyukha你错了。Haskell从来没有隐式转换。
@Flameofudun`8`是一个非常好的`Double`,正如您在我的ghci会议上所看到的那样。正如您所说,它也是一个很好的Int。但是8.0并不是完美的Int,因此min 8 8.0默认为Double而不是Int。
@dyukha这听起来有什么问题?您建议什么固定版本?
我知道了,谢谢,我应该读这篇:https://www.haskell.org/tutorial/numbers.html(特别是“重载文字”部分)