Сгиб (функция более высокого порядка)
-
Определение и применение функции fold
- Функция fold объединяет элементы списка, используя бинарную операцию f.
- Начальное значение z используется для инициализации процесса сворачивания.
- Складывание может быть линейным или древовидным, в зависимости от порядка оценки аргументов функции f.
-
Линейные складки
- Используют начальное значение z для инициализации процесса сворачивания.
- Применяют бинарную операцию f к первому элементу списка и результату предыдущего сворачивания.
- Если список пуст, возвращается начальное значение z.
-
Древовидные складки
- Используют весь список для инициализации процесса сворачивания.
- Применяют бинарную операцию f ко всем элементам списка и результату предыдущего сворачивания.
-
Примеры использования fold
- Складывание строки с помощью Haskell.
- Рекурсивное построение простых чисел с помощью Haskell.
- Сортировка слиянием и nubsort с использованием древовидного сворачивания.
-
Универсальность функции fold
- Может быть использована для полиморфных функций.
- В ленивых языках с бесконечными списками может быть использована для реализации комбинатора с фиксированной точкой.
-
Рекомендации и внешние ссылки
- Ссылки на дополнительные ресурсы и материалы по функциям более высокого порядка.
Полный текст статьи: