Recursion types
-- non-linear recursion
fin 0 = 1
fin 1 = 1
fib n = fib (n - 2) + fib (n - 1)
-- backward linear recursion
rev :: [a] -> [a]
rev [] = []
rev (x:xs) = rev xs ++ [x]
-- forward tail recursion
foldl :: (b -> a -> b) -> b -> [a] -> b
foldl f z [] = z
foldl f z (x:xs) = foldl f (f z x) xsLast updated