Функція вищого порядку
З Вікіпедії, безкоштовно encyclopedia
Функція вищого порядку — функція, що приймає як аргументи інші функції або повертає іншу функцію як результат. Основна ідея полягає в тому, що функції мають той же статус, що й інші об'єкти даних.
Наприклад, функція вищого порядку може бути використана для реалізації незмінної частини алгоритму, у той час як змінна частина має бути реалізована у функції, що передається аргументом. Типовим прикладом може бути функція сортування даних. Сортування даних потребує порівняння екземплярів даних, яке може бути різним для різних типів даних. Без використання функції вищого порядку було б необхідно створювати окрему функцію сортування для кожного типу даних. Але ж, зазвичай, сам алгоритм сортування не залежить від алгоритму порівняння й залежить лише від результату цього порівняння. Можливість вказати, як аргумент виклику, яку саме функцію порівняння треба використовувати для цього виклику, дає можливість створити універсальну функцію сортування. У той же час, та ж сама функція порівняння може бути використана як аргумент й для інших функцій вищого порядку, наприклад, для функцій пошуку максимального чи мінімального елементу.
Використання функцій вищого порядку призводить до абстрактних і компактних програм, беручи до уваги складність вироблених ними обчислень[1]. Іноді функції вищого порядку називають функторами хоча це не зовсім правильно, з математичної точки зору вони є функціоналами чи операторами.
У функціональних мовах програмування всі функції, що приймають декілька аргументів, є функціями вищого порядку, оскільки вони є каррінгованими, що дає можливість наче частково виконати функцію, в результаті чого отримати нову функцію вже від меншого числа аргументів.