Выражение log . fromIntegral n
эквивалентно log . (fromIntegral n)
, а не (log . fromIntegral) n
, что, вероятно, то, что вы хотели. Просто log (fromIntegral n)
, вероятно, более читабельно.
Для общего назидания, когда в сообщении об ошибке указано No instance for (RealFrac (a -> b))
, оно говорит вам, что не может понять, как использовать функцию в качестве дробного числа, что она пытается сделать, потому что вы применяете композицию функции (.)
для результат fromIntegral n
. Это немного глупо в этом случае.