Мне просто любопытно, есть ли они (сначала только порядок полиморфизма) оптимизации со складками.
Для карт есть обезлесение: map g (map f ls) => map (g. f) ls
и rev (map f ls) => rev_map f ls
(быстрее в Ocaml).
Но фолд настолько мощный, что, кажется, не поддается никакой оптимизации.