是否可以编写类型为Int - >的Haskell函数;浮动

时间:2015-10-24 19:25:40

标签: haskell

我可以写

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)。

如果真的不可能,我必须使用哪种类型?

谢谢!

2 个答案:

答案 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

这很慢,也可能会占用大量内存。但我们可以通过分裂的力量来解决它!不幸的是,我现在无法写出来。