01 · Concept

커링과 함수 합성

커링은 다중 인자 함수를 단일 인자 함수 체인으로 변환하고, 함수 합성은 여러 함수를 결합하여 새로운 함수를 만듭니다.

커링(Currying)은 함수의 인자를 하나씩 받아 부분 적용(Partial Application)을 가능하게 합니다. 함수 합성(Composition) pipe compose를 통해 작은 함수들을 결합하여 복잡한 데이터 변환 파이프라인을 구축합니다.

02 · Interactive Demo

부분 적용 및 함수 체이닝 시각화

각 예제를 선택하고 단계별로 실행하여 커링과 합성 과정을 확인하세요.

// 커링: 인자를 하나씩 받는 함수 체인
function multiply(a) {
  return function(b) {
    return a * b;
  };
}

const double = multiply(2);  // a = 2 고정
const triple = multiply(3);  // a = 3 고정

double(5);  // 10
triple(5);  // 15

// 화살표 함수 버전
const multiply = a => b => a * b;
Partial Application
1
a = 2
(b) => 2 * b
2
a = 2 → b = 5
10
03 · Code Example

코드 예시

실제 코드로 동작 원리를 확인하세요.

// 기본 커링
const curry = (fn) => {
  const arity = fn.length;

  return function curried(...args) {
    if (args.length >= arity) {
      return fn(...args);
    }
    return (...moreArgs) => curried(...args, ...moreArgs);
  };
};

// 사용 예
const add = curry((a, b, c) => a + b + c);

add(1)(2)(3);      // 6
add(1, 2)(3);      // 6
add(1)(2, 3);      // 6
add(1, 2, 3);      // 6

// 화살표 함수 커링
const multiply = a => b => a * b;
const double = multiply(2);
const triple = multiply(3);
04 · Interview Point

면접 핵심 질문

커링은 다중 인자 함수를 단일 인자 함수의 체인으로 변환하는 기법입니다. f(a, b, c) f(a)(b)(c)로 변환합니다. 이를 통해 부분 적용(Partial Application)이 가능해집니다 — 일부 인자를 미리 고정한 새로운 함수를 만들 수 있습니다. 클로저를 활용하여 이전에 전달된 인자를 기억합니다.
함수 합성은 여러 함수를 결합하여 새로운 함수를 만드는 기법입니다. compose(f, g)(x) f(g(x))와 같습니다. pipe는 왼쪽에서 오른쪽으로 (읽기 순서), compose는 오른쪽에서 왼쪽으로 (수학적 합성) 실행됩니다. 데이터 변환 파이프라인, 미들웨어 패턴, React HOC 합성 등에 활용됩니다.
1. 설정 팩토리 createLogger("ERROR")("API") 처럼 설정을 단계별로 주입 2. 데이터 파이프라인 pipe(filter, sort, take(10), format) 3. 이벤트 핸들러 handleClick(userId) 로 파라미터 바인딩 4. 유효성 검사 — 검사 규칙을 합성하여 재사용 5. React HOC / 미들웨어 — 기능을 레이어별로 합성