본문 바로가기
javascript pure/javascript 코어 개념

24. 함수형 프로그래밍(Functional Programming) - 3

by leo2114 2024. 2. 17.
반응형

커링(Currying)과 합성(Composition)

커링(Currying)

커링은 다중 인자를 갖는 함수를 단일 인자를 갖는 함수들의 연속으로 변환하는 기법입니다. 이를 통해 함수를 더 재사용 가능하고 유연하게 만들 수 있습니다. 커링된 함수는 각각의 단계에서 하나의 인자만을 받아들이고, 나머지 인자들은 이전 함수 호출 결과로 반환됩니다.

 

핵심 내용:

  • 커링은 다중 인자를 갖는 함수를 단일 인자를 갖는 함수들의 연속으로 변환하는 기법입니다.
  • 커링을 통해 함수를 더 재사용 가능하고 유연하게 만들 수 있습니다.
  • 커링된 함수는 각각의 단계에서 하나의 인자만을 받아들이고, 나머지 인자들은 이전 함수 호출 결과로 반환됩니다.

예시:

// 커링 예시
function add(a) {
  return function(b) {
    return a + b;
  };
}

const add2 = add(2); // add 함수의 첫 번째 인자로 2를 전달하여 새로운 함수 생성
console.log(add2(3)); // Output: 5

합성(Composition)

합성은 두 개 이상의 함수를 조합하여 새로운 함수를 만드는 것을 말합니다. 함수형 프로그래밍에서는 함수를 조립하여 더 복잡한 동작을 수행하는데 사용됩니다. 합성된 함수는 입력 값을 가공하고 그 결과를 다음 함수에 전달하여 최종 결과를 만듭니다.

 

핵심 내용:

  • 합성은 두 개 이상의 함수를 조합하여 새로운 함수를 만드는 것을 말합니다.
  • 함수형 프로그래밍에서는 함수를 조립하여 더 복잡한 동작을 수행하는데 사용됩니다.
  • 합성된 함수는 입력 값을 가공하고 그 결과를 다음 함수에 전달하여 최종 결과를 만듭니다.

예시:

// 합성 예시
function double(x) {
  return x * 2;
}

function increment(x) {
  return x + 1;
}

const compose = (f, g) => x => f(g(x));
const doubleThenIncrement = compose(increment, double);
console.log(doubleThenIncrement(3)); // Output: 7 (3 * 2 + 1)

 

커링과 합성은 함수형 프로그래밍에서 강력한 도구로 사용됩니다. 이를 활용하여 코드를 더 간결하고 유연하게 작성할 수 있으며, 함수들 간의 결합을 통해 다양한 동작을 구현할 수 있습니다.

반응형