Функция высшего порядка через каррирование

Каррированная функция принимает callback и числа по одному: apply(callback)(a)(b). Последний вызов возвращает callback(a, b).

Короткий ответ

Что ответить на собеседовании

Каррированная функция принимает callback и числа по одному: apply(callback)(a)(b). Последний вызов возвращает callback(a, b).

Подробный разбор

Ответ с пояснениями

Условие

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

Ответ

Каррированная функция принимает callback и числа по одному: apply(callback)(a)(b). Последний вызов возвращает callback(a, b).

const apply = callback => a => b => callback(a, b);

const sum = (a, b) => a + b;
apply(sum)(2)(3); // 5
const double = apply((a, b) => a * b)(2);
double(7); // 14

Каждая промежуточная функция замыкает уже переданные аргументы. Обычная функция вида apply(callback, a, b) тоже может вызвать callback, но это не каррирование. Если необходим именно такой интерфейс, его можно сделать обёрткой над приведённым вариантом.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее