【发布时间】:2016-11-22 21:14:28
【问题描述】:
fromIntegral 的类型是(Num b, Integral a) => a -> b。我想了解这是怎么可能的,可以根据需要将任何整数转换为任何数字类型的代码是什么。
fromIntegral 的 actual code 被列为
fromIntegral = fromInteger . toInteger
fromInteger 的code 在instance Num Int 和instance Num Integer 下面分别是:
instance Num Int where
...
fromInteger i = I# (integerToInt i)
和
instance Num Integer where
...
fromInteger x = x
假设I# 调用了一个将Integer 转换为Int 的C 程序,我看不出其中任何一个如何生成可以添加到Float 的结果。他们如何从 Int 或 Integer 转到其他位置?
fromInteger 将嵌入到一个表达式中,该表达式要求它产生某种类型。它不知道所需的类型是什么?那么会发生什么?
谢谢。
【问题讨论】:
标签: haskell