У меня есть две функции:
primes = sieve [2..]
where
sieve (p:xs) = p : sieve [x|x <- xs, x `mod` p > 0]
isPrime number = number /= 1 && null [x | x <- takeWhile (\x -> x < (ceiling . sqrt) number) primes, mod number x == 0]
Дело в том, что когда я пытаюсь загрузить модуль, который содержит эти функции, я вижу следующее сообщение об ошибке:
[2 of 2] Compiling Main ( euler37.hs, interpreted )
euler37.hs:6:70:
No instance for (RealFrac Int)
arising from a use of `ceiling'
Possible fix: add an instance declaration for (RealFrac Int)
In the first argument of `(.)', namely `ceiling'
In the expression: ceiling . sqrt
In the second argument of `(<)', namely `(ceiling . sqrt) number'
euler37.hs:6:80:
No instance for (Floating Int)
arising from a use of `sqrt'
Possible fix: add an instance declaration for (Floating Int)
In the second argument of `(.)', namely `sqrt'
In the expression: ceiling . sqrt
In the second argument of `(<)', namely `(ceiling . sqrt) number'
Я действительно не могу понять, в чем проблема, потому что, когда я пытаюсь сделать небольшую функцию из фрагмента кода, который, насколько я понимаю, вызывает эти ошибки, прямо в ghci, как
пусть е число х = х <(потол. кв. м) число
Я не вижу сообщений об ошибках. </p>