我可以写
double :: Int -> Float
double i = 2.0
但这并不是其论点的功能。铸造显然是 禁止使用混合模式算术,所以我不能做任何像
这样的事情double :: Int -> Float
double i = 2.0 * i
我实际上是想弄清楚如何定义
series :: (Int -> Float) -> Int -> [Float]
返回无限级数[f(i),f(i + 1),f(i + 2),...] 但是我坚持计算f(i)。
如果真的不可能,我必须使用哪种类型?
谢谢!
答案 0 :(得分:9)
我认为你正在寻找fromIntegral
功能。
答案 1 :(得分:1)
fromIntegral
不存在你可以做些什么。首先,超慢版:
intToFloat :: Int -> Float
intToFloat x
| x > 0 = - itf (- x)
| otherwise = itf x
-- Convert a negative Int to a Float
itf 0 = 0
itf x = itf (x + 1) - 1
这很慢,也可能会占用大量内存。但我们可以通过分裂的力量来解决它!不幸的是,我现在无法写出来。