fact :: Int -> Int
fact x = if x == 1 then x else x * fact(x - 1)
nterm :: Double -> Int -> Double
nterm x i = x^i/fromInteger (fact i)
solve :: Double -> Double
solve x = sum [nterm x i| i <- [1..10]] + 1
main :: IO()
main = getContents >>= mapM_ print. map solve. map (read::String->Double). tail. words
Я получаю ошибку follwing при выполнении вышеуказанного кода haskell. Что это значит ? Я понимаю, что тип, возвращаемый fromInteger (Integer
), не такой, как тип, возвращаемый возвратом (Int
). Как я могу это исправить?Как решить может не соответствовать ожидаемый тип в haskell
solution.hs:5:35:
Couldn't match expected type `Integer' with actual type `Int'
In the first argument of `fromInteger', namely `(fact i)'
In the second argument of `(/)', namely `fromInteger (fact i)'
replace fromIntegral –