함수형 프로그래밍/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라는 함수를 보면 조금 복잡해 보이지만 사실 그렇게 까지 어려운 개념이 아니다. 

좀 더 자세한 내용은 다음에 살펴보기로 하자.