我想要一个简单的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)
我究竟做错了什么 ?我怎样才能简单地进行划分?
如果你想做整数除法,只需使用div:
lastf n = if even n then 2 * n + 1 else n `div` 2
Run Code Online (Sandbox Code Playgroud)
之所以是因为Int没有实现/运算符,它是为Fractional类型保留的,比如Float和Double.显然,如果你这样做3 / 2并且你想要1.5回来,你不能将其表示为Int,你必须使用Float或Double(或任何实现Fractional类型类的类型).