ハグを使用して、順列の数を計算する単純な Haskell 関数をコンパイルしています。整数を返したいのですが、浮動小数点数を操作する必要があります。答えを Float として計算してから切り捨てようとしましたが、何らかの理由でうまくいきません。
これは関数です:
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 行目は関数の 2 行目です)。
ERROR "/homes/mb4110/SimpleMath":35 - Type error in application
*** Expression : n r
*** Term : n
*** Type : Float
*** Does not match : a -> b
おそらく私が行方不明であることは明らかですが、私はこれにかなりの時間を費やしてきましたが、解決策が思いつきません。