자바스크립트에서 Currying을 사용하여 함수의 인자를 어떻게 반전할 수 있나요?

아래는 자바스크립트에서 Currying을 사용하여 함수의 인자를 반전시키는 예시 코드입니다. 예를 들어, 인자를 받는 add 함수를 Currying을 사용하여 인자를 반전하는 reverseArgs 함수를 만들어보겠습니다.

const reverseArgs = fn => (...args) => fn(...args.reverse());

const add = (a, b) => a + b;

const curriedAdd = reverseArgs(add);

console.log(curriedAdd(2, 3)); // 5
console.log(curriedAdd(4, 5)); // 9

위 예시 코드에서 reverseArgs 함수는 인자를 받는 함수(fn)를 인자로 받습니다. 이후, Rest 파라미터를 사용하여 fn 함수에 전달할 인자들을 받는 함수를 반환합니다. 이때, args.reverse()를 통해 전달받은 인자들을 반전시킵니다. 마지막으로, 반전된 인자들을 fn 함수에 전달합니다.

add 함수는 두 개의 인자(ab)를 받아서 더해주는 함수입니다. reverseArgs 함수를 사용하여 add 함수를 curriedAdd 함수로 변환합니다. 그 결과, curriedAdd 함수는 인자를 반전시켜서 add 함수를 호출합니다.

위의 예시 코드를 실행하면, curriedAdd 함수를 사용하여 인자를 반전시켜서 add 함수를 호출할 수 있습니다.

Currying은 함수의 인자를 반전시키는 기법으로 유용하게 활용될 수 있습니다.