私は自分自身にHaskellを教えています。
整数平方根を持ち、開始数よりも小さい最初の数を再帰的に見つける関数を作成したいと思います。
次のようになります。
findFirstSquare :: Int -> Int
findFirstSquare x
| x <= 0 = error "This function only works for 1 or above"
| fromInteger(floor(sqrt(x))) == (sqrt x) = x
| otherwise = intSqrt(x - 1)
しかし、GHCは不平を言います:
での`floor'の使用から生じる(RealFrac Int)のインスタンスはありません...
ただし、GHCiに次のように入力すると、正常にコンパイルされます。
fromInteger(floor(sqrt(4))) == (sqrt 4)
私の質問は、GHCiで正常にコンパイルされる式から型エラーが発生するのはなぜですか?