Итак, я хочу создать свою собственную функцию косинуса, используя эту формулу:
Функция должна возвращать значение, если его абсолютное значение больше 0,001.
Однако в моем коде, похоже, есть ошибки типа, которые я просто не знаю, как исправить.Я уже пытался изменить все типы на Double, но он все еще не работает.
fac :: Int -> Int
fac n = if (n == 0) then 1 else n * fac (n-1)
cos :: Double -> Double
cos x = sum [cos| k <- [0..],
let cos = (-1) * (x^(2*k) `div` fac (2*k)) ,
abs (cos) > 0.001]
Это ошибка:
• Не удалось сопоставить ожидаемый тип 'Double' сфактический тип 'Int'
• Во втором аргументе 'div', а именно: fac (2 * k) '