-- Exercice from slide 46

fsum::Num a => [a] -> a
fsum = foldl (+) 0

fmax::(Ord a, Num a) => [a] -> a
fmax = foldl max 0

for::[Bool] -> Bool
for = foldl (||) False

fany::(a->Bool)->[a]->Bool
fany p xs = for $ map p xs