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

max*_*gir 1 haskell division

我想要一个简单的Integer部门,我在Hugs中得到这个

Hugs> :load prog.hs
ERROR file:prog.hs:30 - Instance of Fractional Int required for definition of lastf
Run Code Online (Sandbox Code Playgroud)

我的简单程序是这样的

lastf::Int->Int
lastf 1 = 0 
lastf n = if even n then (2*n+1) else (n/2)
Run Code Online (Sandbox Code Playgroud)

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

bhe*_*ilr 5

如果你想做整数除法,只需使用div:

lastf n = if even n then 2 * n + 1 else n `div` 2
Run Code Online (Sandbox Code Playgroud)

之所以是因为Int没有实现/运算符,它是为Fractional类型保留的,比如FloatDouble.显然,如果你这样做3 / 2并且你想要1.5回来,你不能将其表示为Int,你必须使用FloatDouble(或任何实现Fractional类型类的类型).