함수형 관련 자료 보다가 커링(currying)이랑 부분 적용(partial application)이라는 용어가 나오는데 둘 다 인자를 나눠서 넘긴다는 점이 비슷해 보여서 구분이 안 돼요.
제가 이해한 커링은 인자를 하나씩 받는 함수로 쪼개는 거예요.
const add = (a) => (b) => (c) => a + b + c;
add(1)(2)(3); // 6
이렇게 괄호를 하나씩 계속 여는 거요. 근데 부분 적용은 이런 식으로 몇 개만 미리 채워 넣는 거라고 하더라고요.
function add3(a, b, c) {
return a + b + c;
}
const add10 = add3.bind(null, 10);
add10(2, 3); // 15
이렇게 놓고 보면 둘 다 결국 "인자를 미리 좀 넣어두고 나중에 나머지 넣는다"는 거라 뭐가 본질적으로 다른 건지 모르겠어요. 커링한 함수를 add(1) 이렇게만 호출하면 그게 부분 적용 아닌가요? 아니면 커링은 무조건 한 번에 하나씩만 받아야 하는 규칙 같은 게 있는 건가요?
실무에서 둘 중에 뭘 더 많이 쓰는지, 그리고 이런 걸 실제로 어디에 써먹는지도 궁금합니다. 개념만 봐서는 이걸 왜 하나 싶어서요.