347.71K
Category: mathematicsmathematics

Метод каррирования функции

1.

Метод каррирования
функции
На примере javascript

2.

Каррирование
• Каррирование – это преобразование функции с множеством аргументов в набор
вложенных функций с одним аргументом.
• При
использовании новой конструкции каждая функция, кроме последней,
возвращающей результат вычислений, принимает аргумент и возвращает другую
функцию, также способную принять аргумент и возвратить другую функцию.
Обычная
функция
Каррированная
функция

3.

• Чтобы лучше разобраться, можно расписать вызов данной функции в таком виде:

4.

Преимущества каррирования
• Удобство вызова функций: если функция принимает несколько аргументов и вы хотите
вызвать ее с разными наборами аргументов, каррирование позволяет вам создать цепочку
функций, где каждый элемент принимает один аргумент, и вам не нежно создавать отдельные
функции для каждого набора аргументов.
• Возможность отложить вычисление результата: Когда вы создаете цепочку функций, вы
можете отложить вычисление последнего аргумента, что может быть полезно в некоторых
ситуациях, например, когда вы хотите вычислить аргумент только при необходимости.
• Возможность создания пользовательских
функций высшего порядка: Каррирование
позволяет создавать пользовательские функции высшего порядка, которые принимают другую
функцию в качестве аргумента и возвращают результат после выполнения этой функции с
заданными аргументами.
• Улучшение
читаемости кода: Использование каррирования может сделать код более
читаемым, поскольку каждая функция в цепочке является самодостаточной и выполняет свою
роль в процессе вызова исходной функции.
• Возможность параллельного выполнения: Если аргументы функции могут быть вычислены
независимо друг от друга, каррирование может позволить выполнять эти вычисления
параллельно, что может значительно ускорить выполнение функции.

5.

Частичное применение аргументов
• Мы можем вызвать функцию, которая уже содержит один из аргументов. В таком
она будет принимать все остальные параметры, добавляя заданный:

6.

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

7.

• Пример простой системы логирования.

8.

Автоматическое каррирование
функции
English     Русский Rules