부분 적용과 커링의 차이
커링
//Currying
const add = (a, b, c) => a + b + c;
const curriedAdd = (a) => (b) => (c) => a + b + c;
curriedAdd(1)(2)(3); //currying expect one arg at time
커링은 한 번에 하나의 인자를 전달하는 것이 원칙이다.
또한 마지막 인자가 완성되기까지 원본함수인 add는 대기한다.
부분적용
//Partial Application
const add = (a, b, c) => a + b + c;
const partialAdd5 = add.bind(null, 1);
partialAdd5(2, 3); //second call expect all the arg
부분 적용은 호출 때마다 원본함수인 add가 실행된다.
또한 두 번째 실행 때 나머지 인자들을 모두 전달해야 한다.
또 bind 등으로 이뤄졌기 때문에 this값에 영향을 받는 obj내부의 메서드에서 사용이 힘들다.
'Front-end > JavaScript' 카테고리의 다른 글
JS FP 8편 - 함수 합성(Compose, Pipe, Arity) (0) | 2023.03.13 |
---|---|
JS FP 7편 - Memoization (0) | 2023.03.12 |
JS FP 5편 - 함수형 프로그래밍의 핵심기술(Hof, clusure, currying) (0) | 2023.03.10 |
JS FP 4편 - 불변성(Immutability) (0) | 2023.03.09 |
JS FP 3편 - 선언형과 명령형(Imperative vs Declarative) (0) | 2023.02.20 |