커링과 부분 적용 함수는 함수형 프로그래밍에서 사용하는 함수 조합 기법입니다. 이번 글에서는 이 두 가지 방법의 차이점과 사용 예시를 알아보겠습니다.
커링과 부분 적용 함수는 함수를 호출할 때 인자를 하나씩 적용해 나가는 방식으로 사용합니다. 이때, 커링과 부분 적용 함수는 모두 함수를 반환하는 고차 함수(higher-order function)입니다.
커링(Currying)
커링은 인자를 여러 개 받는 함수를 인자를 하나씩 받는 함수들의 중첩함수로 바꾸는 것입니다. 이를 통해 함수를 다양하게 조합하여 사용할 수 있습니다.
function multiply(a, b) {
return a * b;
}
const double = multiply.bind(null, 2);
console.log(double(5)); // 10
// 커링을 사용한 예시
function curryMultiply(a) {
return function(b) {
return a * b;
}
}
const triple = curryMultiply(3);
console.log(triple(5)); // 15
위 코드에서 multiply
함수를 bind
메소드를 이용해 2
를 고정하면 double
함수는 첫 번째 인자를 2
로 고정한 상태에서 두 번째 인자를 받아 계산합니다. 이를 커링으로 구현한 curryMultiply
함수는 인자를 하나씩 받는 중첩 함수로 구성되어 있습니다. 이를 이용해 3
을 인자로 넘겨 triple
함수를 생성하고, triple(5)
를 호출하면 15
가 출력됩니다.
부분 적용 함수(Partial Application)
부분 적용 함수는 인자를 미리 받아 함수를 적용한 새로운 함수를 생성합니다. 이를 이용하면 함수를 다양하게 조합하여 사용할 수 있습니다.
function add(a, b, c) {
return a + b + c;
}
const addFive = add.bind(null, 5);
console.log(addFive(3, 2)); // 10
// 부분 적용 함수를 사용한 예시
function partialAdd(a) {
return function(b, c) {
return add(a, b, c);
}
}
const addTen = partialAdd(10);
console.log(addTen(3, 2)); // 15
위 코드에서 add
함수를 bind
메소드를 이용해 5
를 고정하면 addFive
함수는 첫 번째 인자를 5
로 고정한 상태에서 두 번째와 세 번째 인자를 받아 계산합니다. 이를 부분 적용 함수로 구현한 partialAdd
함수는 인자를 하나씩 받는 중첩 함수로 구성되어 있습니다.
반응형
'공부 > 프론트엔드' 카테고리의 다른 글
[VSCODE] Powershell UnauthorizedAccess 오류 해결 방법 (1) | 2021.10.29 |
---|---|
[CSS] Flexbox CSS Layout의 이해를 위한 게임 (0) | 2018.08.23 |