Частичное применение
Частичное применение — возможность в ряде языков программирования зафиксировать часть аргументов многоместной функции и создать другую функцию, меньшей арности. Например, имея трёхместную функцию formula_1, можно зафиксировать («привязать») первый аргумент formula_2, и построить бинарную функцию formula_3 такую, что formula_4 для любых formula_5.

В практике программирования частичное применение используется в связи с тем, что функции, полученные путём фиксации некоторого количества аргументов, зачастую оказываются полезными. К примеру, многие языки программирования имеют функцию или оператор инкремента (являющимся фиксацией единицы как одного из аргументов двухместного сложения) или функцию обращения значения. Частичное применение возможно реализовать практически во всех языках программирования, обладающих возможностью определения многоместных функций. В ряде языков есть специализированные конструкции для частичного применения, например, в стандартной библиотеке C++ имеется функция codice_1, которая на входе принимает имя функции и аргументы, и возвращает функциональный объект — результат частичного применения переданного набора аргументов к функции.

В ряде функциональных языков программирования, таких как ML и Haskell, функции объявляются в каррированной форме по умолчанию, то есть, понятие о многоместности функций реализуется средствами одноместных функций высших порядков; в этих условиях частичным применением (называемом в этих языках сечением операторов) оказывается всякая передача неполного числа аргументов.

В языках программирования с функциями первого класса можно определить codice_2, codice_3 и codice_4, чтобы осуществить каррирование и частичное применение напрямую (при этом связь между ними следующая: codice_5). Но такой подход может привести к дольшему времени выполнения программы в связи с созданием дополнительных замыканий, в то время как Haskell позволяет использовать более эффективные приёмы.
Q9143
языков программирования
Concept
Q1315869
арности
Concept
Q9143
языки программирования
Concept
Q11067259
инкремент
UNK
Q1022270
стандартной библиотеке C++
MEDIA
Q2072111
функциональный объект
Concept
Q193076
функциональных языков программирования
Concept
Q860654
ML
MEDIA
Q34010
Haskell
MEDIA
Q1144925
каррированной
Concept
Q1474542
функций высших порядков
Concept
Q1344046
функциями первого класса
Concept
Q535335
замыканий
Concept
Q7140358
Частичное применение
UNK
Q7140358
Частичное применение
UNK
+1^^http://www.w3.org/2001/XMLSchema#decimal
1
NUMBER
+2^^http://www.w3.org/2001/XMLSchema#decimal
2
NUMBER
+3^^http://www.w3.org/2001/XMLSchema#decimal
3
NUMBER
+4^^http://www.w3.org/2001/XMLSchema#decimal
4
NUMBER
+5^^http://www.w3.org/2001/XMLSchema#decimal
5
NUMBER
+1^^http://www.w3.org/2001/XMLSchema#decimal
1
NUMBER
+2^^http://www.w3.org/2001/XMLSchema#decimal
2
NUMBER
+3^^http://www.w3.org/2001/XMLSchema#decimal
3
NUMBER
+4^^http://www.w3.org/2001/XMLSchema#decimal
4
NUMBER
+5^^http://www.w3.org/2001/XMLSchema#decimal
5
NUMBER
programming paradigm
instance of