함수형 프로그래밍/javascript
javascript로 curry 만들기
thebirghtwide
2021. 7. 15. 22:21
curry란 여러가지 수식어들이 많지만 쉽게 표현하자면 아래 코드처럼
const add = (a,b) => a + b
add(1,2) -- 일반적으로 사용되는 함수
add(1)(2) -- curry로 사용되는 함수
일반적인 상식으로는 add(1,2)로 함수를 써야하지만 curry가 적용되면 add(1)(2) 이런 방식으로 함수를 사용할 수 있게 된다. 아래는 curry를 만드는 함수와 간단한 예제를 작성하였다.
const curry = f =>
(curried = (...args) => {
if (args.length >= f.length) {
return f(...args);
} else {
return (...args2) => {
return curried(...args, ...args2);
};
}
});
const add = (a, b) => a + b;
const add2 = curry(add);
console.log(add2(1)(2));
// 결과는 3 이 출력된다.
curry라는 함수를 보면 조금 복잡해 보이지만 사실 그렇게 까지 어려운 개념이 아니다.
좀 더 자세한 내용은 다음에 살펴보기로 하자.