Add foldl
Refactor compose to use internal foldl