MyTetra Share
Делитесь знаниями!
Частичное применение (каррирование) функций в Haskell
Время создания: 23.04.2019 01:07
Автор: br0ke
Текстовые метки: haskell, fp, partial, application, function, curry, currying
Раздел: Информационные технологии - Haskell
Запись: and-semakin/mytetra_data/master/base/1555963638ow7fl5gl0d/text.html на raw.githubusercontent.com

В Haskell функцию нескольких аргументов можно применить частично, т.е. передать туда не все необходимые аргументы. В таком случае будет порождена новая функция, в которую можно допередать аргументы, и, когда все нужные аргументы будут переданы, будет вычеслен результат. Например, создадим функцию трёх аргументов add:


add a b c = a + b + c

add5 b c = add 5 b c


add5 -- функция двух аргументов. Но её можно записать и короче, просто убрав с конца перечисление лишних аргументов. Это называется бесточечным стилем:


add5 = add 5


Использование:


add5 2 3

> 10


Именно ради удобства частичного применения функций в Haskell принято соглашение, что самые важные аргументы идут в конце. Таким образом, можно создать новую функцию, где уже будут закреплены несколько первых (не особо важных, редко меняющихся) аргументов, а принимать она будет последние -- самые важные и часто меняющиеся.

 
MyTetra Share v.0.59
Яндекс индекс цитирования