Смысл fold
в том, что он более абстрактный. Дело не в том, что вы можете делать то, что раньше не могли, а в том, что вы можете делать это легче.
Используя fold
, вы можете обобщить любую функцию, которая определена на двух элементах, для применения к произвольному числу элементов. Это выигрыш, потому что обычно гораздо проще написать, протестировать, поддерживать и модифицировать одну функцию, которая применяет два аргумента, чем список. И всегда проще писать, тестировать, поддерживать и т. Д. Одну простую функцию вместо двух с похожими, но не совсем функциональными возможностями.
Поскольку fold
(и в этом отношении map
, filter
и друзья) имеют четко определенное поведение, зачастую понять код с помощью этих функций гораздо проще, чем явной рекурсии.
По сути, если у вас есть одна версия, вы получаете другую «бесплатно». В конечном итоге вы получаете меньше работы, чтобы получить тот же результат.