【发布时间】:2016-05-16 05:53:03
【问题描述】:
Prelude> let c=[1.0,2.0]
Prelude> :t c
c :: Fractional t => [t]
我希望“c”是 Num 或 Float 的列表。为什么是分数? Haskell 中是否有任何隐式类型转换?
【问题讨论】:
-
好吧,
.0表示数字的 小数 部分(即使在这种情况下是0)。[1.5]的类型是什么?它不能是Num,因为如果它是Num,它必须可以转换为,比如说,Int,但是没有独特的合理方法可以做到这一点(四舍五入?四舍五入?四舍五入?四舍五入奇怪?)。此外,您不希望1.0具有Num类型,而1.1具有Fractional类型......一个轻微的错字可能会改变程序中太多的东西。因此报告中的简单规则。