Всем привет! Прошу помочь разобраться нюансах. Есть не понимание, что здесь происходит:
Задача
Необходимо реализовать функцию flip, которая меняет местами аргументы переданной функции
Пример её работы:
const sub = (a, b) => a - b;
const reverseSub = flip(sub);
sub(5, 3); // 2
reverseSub(5, 3); // -2
Реализация функции flip:
const flip(f) => (a, b) => f(b, a);
Вопрос:
Не совсем понятно, что происходит после передачи функции в параметр. Ведь мы не просто аргумент в виде числа передаём, а целую функцию. Выходит, в аргументах flip находится(если мы говорим об этом примере.
flip((a, b) => a - b) => (a, b) => f(b, a);
Как это потом всё работает? Объясните, пожалуйста!