我正在使用拥抱来编译一个简单的 Haskell 函数来计算排列的数量。我希望它返回一个整数,但我需要对浮点数进行操作。我试图将答案计算为浮点数,然后将其截断,但由于某种原因它无法解决。
这是功能:
choose :: Float -> Float -> Integer
choose n r = truncate (chooseF (n r))
where
chooseF::Float->Float->Float
chooseF n r | n==r = 1
| otherwise = n / (n-r) * chooseF(n-1) r
这是错误(第 35 行是函数的第二行):
ERROR "/homes/mb4110/SimpleMath":35 - Type error in application
*** Expression : n r
*** Term : n
*** Type : Float
*** Does not match : a -> b
我可能很明显错过了一些东西,但我已经做了很长一段时间了,想不出解决方案。