Compose
//Compose
//data >> fn >> data >> fn >> data
const compose = (f, g) => (data) => f(g(data));
const multiplyBy3 = (num) => num * 3;
const makePositive = (num) => Math.abs(num);
const multiplyBy3AndAbsolute = compose(multiplyBy3, makePositive);
multiplyBy3AndAbsolute(-50);
multiplyBy3은 3을 곱해주는 함수이다.
makePositive는 절댓값으로 변경해 주는 함수다.
compose는 커링기법으로 두 함수 f와 g를 인자로 먼저 받고
데이터를 이후에 받아서 먼저 받은 두 함수를 g -> f순으로 적용시킨다.
Pipe
//Pipe
const pipe = (f, g) => (data) => g(f(data));
pipe는 compose와 별 차이점이 없다.
compose는 우측, g함수부터 적용시키고 이후 f를 적용시켰다면
pipe는 좌측, f부터 적용을 시키고 이후 g를 적용시킨다는 차이점이 있다.
Arity
항수(arity)는 함수의 오퍼랜드의 개수를 뜻한다.
//Arity
// compose -> 2, multiplyBy3 -> 1
위 코드에서 compose와 pipe는 함수가 가진 오퍼랜드가 2개이므로
arity는 2이다.
반면 compose를 구성하는 데 사용된 multyplyBy3이나 makePositive함수는
arity가 1이다.
'Front-end > JavaScript' 카테고리의 다른 글
FP vs OOP (0) | 2023.03.16 |
---|---|
JS FP 9편 - 함수형 프로그램 (0) | 2023.03.15 |
JS FP 7편 - Memoization (0) | 2023.03.12 |
JS FP 6편 - 부분 적용 함수(Partial Application) (0) | 2023.03.11 |
JS FP 5편 - 함수형 프로그래밍의 핵심기술(Hof, clusure, currying) (0) | 2023.03.10 |