我正在自学 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 抱怨:
(RealFrac Int) 没有因在 ...
但是,如果我在 GHCi 中键入以下内容,它会愉快地编译它:
fromInteger(floor(sqrt(4))) == (sqrt 4)
我的问题是:为什么在 GHCi 中成功编译的表达式会出现类型错误?