需要分数int的实例,函数简单

时间:2014-01-16 20:05:36

标签: haskell division

我想要一个简单的整数分区,我在Hugs中得到这个

Hugs> :load prog.hs
ERROR file:prog.hs:30 - Instance of Fractional Int required for definition of lastf

我的简单程序就像这样

lastf::Int->Int
lastf 1 = 0 
lastf n = if even n then (2*n+1) else (n/2)

我做错了什么?我怎样才能简单地进行划分?

1 个答案:

答案 0 :(得分:5)

如果要进行整数除法,只需使用div

lastf n = if even n then 2 * n + 1 else n `div` 2

原因是因为Int未实现/运算符,因此会为Fractional类型保留,例如FloatDouble。显然,如果您执行3 / 2并希望1.5返回,则无法将其表示为Int,您必须使用Float或{{1 (或实现Double类型类的任何类型)。