자바스크립트에서 Currying을 통해 어떤 장점을 얻을 수 있나요?
  1. 코드 재사용성: Currying을 통해 인자를 한 개씩 받아 연속적으로 호출하는 함수를 생성할 수 있습니다. 이를 통해 함수를 재사용하기 쉽고, 매번 같은 로직을 반복해서 코딩할 필요가 없어집니다. 예를 들어, 두 수를 더하는 함수를 Currying을 사용하여 인자를 한 개씩 받는 함수로 변환하면, 더하기 연산을 자주 사용하는 경우 간단하게 재사용할 수 있습니다.
const add = (a) => (b) => a + b;

const addOne = add(1);
addOne(2); // 3

const addTen = add(10);
addTen(5); // 15
  1. 유연한 함수 조합: Currying을 사용하여 함수를 더 작은 단위로 분해하면, 다양한 함수 조합을 자유롭게 할 수 있습니다. 예를 들어, 여러 개의 인자를 받는 함수들을 Currying을 통해 한 개씩 받는 함수들로 변환한 후, 필요에 따라 순서를 변경하거나 조합해 새로운 함수를 만들 수 있습니다.
const multiply = (a) => (b) => a * b;
const subtract = (a) => (b) => a - b;

const doubleAndSubtractThree = (value) => subtract(multiply(2)(value))(3);
doubleAndSubtractThree(5); // 7 (2 * 5 - 3)
  1. 부분적용(Partial Application): Currying된 함수는 일부 인자만 전달하여 호출할 수 있습니다. 이를 통해 특정 함수에 일부 인자를 미리 지정한 후, 나중에 나머지 인자를 전달하여 호출할 수 있습니다. 이는 어떤 함수의 일부 인자가 고정되거나, 특정 상황에서 일부 인자를 미리 지정해야 할 때 유용합니다.
const greet = (greeting) => (name) => `${greeting}, ${name}!`;

const sayHello = greet("Hello");
sayHello("John"); // "Hello, John!"
sayHello("Jane"); // "Hello, Jane!"

const sayHi = greet("Hi");
sayHi("Mike"); // "Hi, Mike!"
sayHi("Emily"); // "Hi, Emily!"

Currying은 자바스크립트에서 함수형 프로그래밍을 구현하는데 유용한 기법 중 하나입니다. 이를 통해 코드 재사용과 유연한 함수 조합, 부분적용 등의 장점을 얻을 수 있습니다. 따라서 Currying을 사용하면 더 효율적이고 유연한 코드를 작성할 수 있습니다.

#JavaScript #Currying