Я учу себя Хаскеллу.
Я хочу написать функцию, которая рекурсивно находит первое число с целочисленным квадратным корнем и меньше начального числа.
Это выглядит так:
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), возникающего из-за использования `floor 'в ...
Однако, если я наберу следующее в GHCi, оно с радостью скомпилирует его:
fromInteger(floor(sqrt(4))) == (sqrt 4)
У меня вопрос: почему я получаю ошибку типа из выражения, которое успешно компилируется в GHCi?