fromIntegral因此,最近我遇到了很多类型转换错误。这使我开始使用fromIntegral,尽管我对它的工作方式感到困惑。
minimalExample :: Integer -> Integer
minimalExample a = truncate y
where
x = fromIntegral (a + 10)
y = x - 12 * (x / 13)
Run Code Online (Sandbox Code Playgroud)
请注意,我必须使用fromIntegral哪种方式确保操作员的x类型正确(/)。如果x是Integral类型,那将行不通。对GHCI中的函数进行类型检查会得到以下信息:
Prelude> :t fromIntegral
fromIntegral :: (Integral a, Num b) => a -> b
Prelude> :t (/)
(/) :: Fractional a => a -> a -> a
Run Code Online (Sandbox Code Playgroud)
显然fromIntegral将Int/ Integer转换为某些Num类类型(哪个?我不知道)。除法中缀运算符期望两个小数作为输入。现在看一下该图,该图总结了Haskell中的标准type-class-relations。
Num在上面Fractional …