Вообще говоря, foldl'
лучше всего подходит для вещей, которые похожи на cons-списки, а foldr'
лучше всего подходит для вещей, которые похожи на snoc-списки.Ситуации симметричны, поэтому давайте просто посмотрим на списки минусов, где foldl'
лучше бы было хорошо.
Вы, наверное, читали, что foldl
для списков минусов может привести к пробелам, если это не такоптимизирован достаточно хорошо.Ну, это именно то, что здесь произойдет.f'
строгое, но ни один из его результатов не требуется до тех пор, пока сгиб не достигнет конца списка!
Определения по умолчанию дают небольшой поворот, что позволяет правильно работать даже наивной компиляции (или интерпретации).