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