• 모닥위키모닥위키
  • 모닥위키
위키
  • 임의문서
  • 주간인기
  • 문서
  • 시리즈
    AAAdddvvveeerrrtttiiissseeemmmeeennntttAdvertisement

    © 2025 modak.wiki All rights reserved.

      부분 어플리케이션, 커링, 함수 합성과 파이프

      Chapter 32 - Partial Applications, Currying, Compose and Pipe

      컴퓨터/IT학습
      lu

      luasenvy (luasenvy)

      CC BY 4.0 국제규약

      부분 어플리케이션

      const multiply = (x, y) => x * y;
      const double = multiply.bind(null, 2);
      console.log(double(5)); // 10
      

      함수의 일부 인자를 미리 제공하여 새로운 함수를 만드는 기법이다. 코드의 반복성을 줄여 가독성과 유지보수를 더 쉽게 할 수 있다. bind() 함수는 this, call, apply, bind에서 확인할 수 있다.

      커링

      const add = (x) => (y) => x + y
      const add5 = add(5);
      console.log(add5(10)); // 15
      

      커링은 여러 개의 인자를 받는 함수 하나를 여러 단계로 분리하여 단계별로 처리할 수 있도록 변환하는 기법이다. 각 단계마다 하나의 인자를 받고 마지막 단계에서 최종 값을 반환하도록 구성하여 코드의 재사용성을 높이고 함수 합성(Composition)과 같은 기법과 결합하여 사용할 수 있다.

      함수 합성

      const compose = (a, b) => (x) => a(b(x));
      
      const add3 = (x) => x + 3;
      const multiply4 = (x) => x * 4;
      
      const add3Multiply4 = compose(multiply4, add3);
      
      console.log(add3Multiply4(5)); // (5 + 3) * 4 = 32
      

      여러 개의 작은 함수를 결합하여 더 복잡한 함수를 구성하는 기법이다. 합성된 함수는 앞의 함수의 출력을 다음 함수의 입력으로 사용해 복잡한 연산을 하나의 흐름으로 처리할 수 있다. 마찬가지로 코드를 더 간결하게 만들 수 있고 그에 따라 유지보수가 편리한 코드를 작성할 수 있다.

      파이프

      const pipe = (...functions) => (params) => functions.reduce((acc, fn) => fn(acc), params)
      
      const add3 = (x) => x + 3;
      const multiply4 = (x) => x * 4;
      const double = (x) => x * 2;
      
      console.log(double(multiply4(add3(2))));   
      
      pipe(add3, multiply4, double)(2);
      

      파이핑과 함수 합성의 근본적인 작동원리는 동일하지만 각각 우→좌, 좌→우 의 순서에서 차이점이 있다. 함수 합성의 경우 수학적 전통에 의해서 a(b(x)) 라는 형식을 유지한다. 코드에서도 영향을 받아 compose(a, b)(x)라고 표현하여 이 형태를 유지하는데 의미가 있다.

      파이프의 경우 반대로 좌 → 우로 작성되기 때문에 읽는 순서대로 실행이 가능하여 더 직관적이므로 가독성을 더 높일 수 있다는 장점이있다.

      초판: 2024. 08. 20. 22:46:50

      © 2024 이 문서는 "CC BY 4.0 국제규약" 라이선스로 배포 되었습니다. 모든 권리는 저자에게 있습니다.

      부분 어플리케이션, 커링, 함수 합성과 파이프

      부분 어플리케이션
      커링
      함수 합성
      파이프