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)