Haskell

时间:2015-08-18 20:33:48

标签: haskell overloading

getNext a = if even a then a/2 else (3*a)+1 

由于某种原因,这行代码返回一个未解决的重载错误。

Main> getNext 13
ERROR - Unresolved overloading
*** Type       : (Fractional a, Integral a) => a

我做错了什么或我错过了什么?我很久没有使用过Haskell所以我可能忘记了一些事情。

1 个答案:

答案 0 :(得分:7)

你可能想要

a `div` 2

而不是

a/2

发生错误是因为even a意味着a是一个整数,但使用非整数除法运算符/则意味着其他情况。