Функція вищого порядку

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

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

У функціональних мовах програмування всі функції, що приймають кілька аргументів, є функціями вищого порядку. Це можливо через те, що всі функції в мовах ФП є каррінгованими, що дає можливість частково виконати функцію, в результаті чого можна отримати нову функцію, але вже від меншого числа аргументів (взагалі, говорити про те, що функція приймає кілька аргументів, некоректно, тому що всі функції є функціями одного аргументу, хоча результатом роботи функції може бути інша функція).

Приклад[ред.ред. код]

Наступний код, написаний на Python, містить функцію вищого порядку g (), яка в якості першого аргументу приймає функцію. У результаті на екран буде виведено «100» (результат обчислення (7 +3) × (7 +3)).

def f(x):
    return x + 3
 
def g(function, x):
    return function(x) * function(x)
 
print g(f, 7)

Та ж програма на F #, тут f — функція вищого порядку, яка приймає функцію func як параметр.

let f func x = (func x) * (func x)
 
let f2 a = a+3
f f2 7

Примітки[ред.ред. код]

  1. А. Філд, П. Харрісон, Функціональне програмування, Стор. 55 [Розділ 3: Функції вищого порядку]..

Джерела[ред.ред. код]

  • А. Філд, П. Харрісон Функціональне програмування: Пер. з англ. - М.: Мир, 1993. - 637 с, іл. ISBN 5-03-001870-0.

Див. також[ред.ред. код]