fak n = foldr (*) 1 [1..n]

maP f = foldr (\x -> (f x:)) []

filteR p = foldr (\x xs -> if p x then x:xs else xs) []

rev = foldl (flip (:)) []

len = foldr (const (+1)) 0

app = flip (foldr (:))
