Описание тега partial-application

Частичное приложение - это метод программирования, при котором в функцию передается меньше, чем полное число аргументов, чтобы получить новую функцию, которую можно использовать позже. Это особенно часто встречается в функциональных языках, поддерживающих каррирование.

Частичное приложение - это метод программирования, при котором в функцию передается меньше, чем полное число аргументов, чтобы получить новую функцию, которую можно использовать позже. Это особенно часто встречается в языках функционального программирования, поддерживающих каррирование.

Пример (OCaml)

(* `add` is a function with arity 2 *)
let add a b = a + b

(* `add` is partially applied with the arguemnt `2`,
 * yielding a function of arity 1 *)
let add2 = add 2

(* `4` is applied to `add2`, making it fully applied
 * and yielding the result of evaluating `add`: `6` *)
let x = add2 4

Пример (Python)

Рассмотрим следующую функцию:

def add_together(a, b):
    return a + b

Если мы хотим удержать a константа, мы можем вручную создать ту же функцию с константой, например, 5:

def add_together(b):
    return 5 + b

В программировании нам обычно нужен программный способ установки нашей константы и генерации нашей частичной функции. В Python мы можем сделать это с помощью замыкания:

def set_a_on_add_together(a): # the outer function takes a parameter, a
    def add_a_to(b):          # outer function def's new function w/ parameter, 5
        return a + b          # the new function returns a, held constant, plus b
    return add_a_to           # outer function returns the newly created function

и будет использоваться так:

add_to_five = set_a_on_add_together(5)
add_to_five(4)

вернется 9, а также

add_to_five(10)

вернется 15.