[javascript] 클로저를 활용한 Currying 구현
클로저(closure)란 함수와 그 함수 내에서 선언된 변수의 조합을 말합니다. 클로저를 활용하면 함수형 프로그래밍에서 currying
을 간단하게 구현할 수 있습니다.
Currying이란 무엇인가요?
Currying
은 함수를 부분적으로 실행하여 나중에 남은 인수를 받아 실행하는 기법입니다. 예를 들어, add
라는 함수가 있다면 add(2)(3)
과 같이 두 번 호출하는 형태입니다. 이는 함수형 프로그래밍에서 다양한 활용이 가능합니다.
클로저를 이용한 Currying 구현
다음은 JavaScript를 사용하여 클로저를 활용해 currying
을 구현하는 예제입니다.
function curry(func) {
return function curried(...args) {
if (args.length >= func.length) {
return func.apply(this, args);
} else {
return function(...moreArgs) {
return curried.apply(this, args.concat(moreArgs));
};
}
};
}
function add(a, b, c) {
return a + b + c;
}
const curriedAdd = curry(add);
console.log(curriedAdd(1)(2)(3)); // 출력: 6
위 예제에서 curry
함수는 클로저를 활용하여 curried
함수를 반환합니다. curried
함수 내에서는 현재 받은 인수(args
)와 추가로 받은 인수(moreArgs
)를 합쳐 새로운 curried
함수를 반환하는 구조입니다. 이를 통해 curriedAdd
를 통해 add
함수의 currying
버전을 만들고 활용할 수 있습니다.
클로저를 활용하면 currying
혹은 다른 함수형 프로그래밍 기법을 보다 간단하게 구현할 수 있습니다.
결론
클로저를 활용한 currying
구현은 함수형 프로그래밍에서 유용하게 활용될 수 있습니다. 이를 통해 코드의 가독성을 높이고 유지보수를 용이하게 할 수 있습니다.
위 이미지는 currying
의 개념적인 이해를 도와줍니다.