Проблема в том, что ваш ввод должен быть Integral
из-за ^
и Fractional
из-за /
. Вы можете легко исправить это, используя другой оператор для одного из них; например, используйте **
вместо ^
:
natlog x = until cond count (1,1,0)
where
cond (_,val,_) = val < 0.001
count (i,val,sum) = (i+1,(-x)**i/i,sum+val)