
Why do I get an error in the following example: memoized_fib :: Integer -> Integer memoized_fib = (map fib [0 ..] !!) where fib 1 = 1 fib 2 = 1 fib n = memoized_fib (n-2) + memoized_fib (n-1) but not in: memoized_fib :: Int -> Integer memoized_fib = (map fib [0 ..] !!) where fib 1 = 1 fib 2 = 1 fib n = memoized_fib (n-2) + memoized_fib (n-1) ? The error is reported by GHCi as: error: • Couldn't match type ‘Integer’ with ‘Int’ Expected type: Integer -> Integer Actual type: Int -> Integer • In the expression: (map fib [0 .. ] !!) In an equation for ‘memoized_fib’: memoized_fib = (map fib [0 .. ] !!) where fib 1 = 1 fib 2 = 1 fib n = memoized_fib (n - 2) + memoized_fib (n - 1) | 2 | memoized_fib = (map fib [0 ..] !!) | ^^^^^^^^^^^^^^^^^ Failed, 0 modules loaded.