Такие сообщения об ошибках появляются, когда вы используете целочисленное значение, в котором ожидалось плавающее значение (или наоборот).
В этом случае проблема в том, что вы вызываете sqrt
, который принимает значение с плавающей запятой в качестве аргумента, на num
, заставляя компилятор думать, что num
является значением с плавающей запятой. Но также используйте num
в качестве верхнего предела для n
, который представляет собой список целочисленных значений (поскольку он используется в качестве аргумента для findMult
, который нуждается в списке целочисленных значений).
Итак, прежде чем звонить sqrt
на num
, позвоните fromIntegral
на нем, например:
x = ceiling (sqrt (fromIntegral num))