memoized_fib :: Int -> Integer memoized_fib = (map fib [0..] !!) where fib 0 = 0 fib 1 = 1 fib n = memoized_fib(n - 2) + memoized_fib(n - 1) memoized_fib2 :: Int -> Integer memoized_fib2 n = (map fib[0..]) !! n where fib 0 = 0 fib 1 = 1 fib n = memoized_fib2(n - 2) + memoized_fib2(n - 1)