1. 함수 합성(Function Composition)이란?
함수 합성은 함수들을 조합하여 새로운 함수를 만드는 것입니다.
함수 합성(Function Composition)을 사용해서 함수를 만들어 보겠습니다.
1) compose()의 특징은
함수 호출들을 오른쪽에서 왼쪽 방향으로 볼수 있습니다.
const compose = function(functions){
if(!functions.length){
return function(x){
return x;
}
}
return function(x){
let val = x;
for(let i = functions.length - 1; i >= 0; i--){
val = functions[i](val)
}
return val;
}
}
const fn = compose([x => x + 1, x => 2 * x])
fn(4) //9
이것을 해석하면 compose 함수 호출에 배열들을 오른쪽에서 왼쪽으로 순회하고 있는 모습을 확인할 수 있습니다.
이것은 마치 자바스크립트 내장함수인 reduceRight()함수와 같은 것입니다.
2) pipe()의 특징은
함수 호출들을 왼쪽에서 오른쪽 방향으로 볼 수 있습니다.
const pipe = function(functions) {
if (!functions.length) {
return function(x) {
return x;
}
}
return function(x) {
let val = x;
for (let i = 0; i < functions.length; i++) {
val = functions[i](val)
}
return val;
}
}
const fn = pipe([x=>x + 1, x=>2 * x])
fn(4) //10
이것을 해석하면 pipe 함수 호출에 배열들을 왼쪽에서 오른쪽으로 순회하고 있는 모습을 확인할 수 있습니다.
이것은 마치 자바스크립트 내장함수인 reduce() 함수와 같은 것입니다.
reduce함수와, reduceRight함수가 내부적으로 어떻게 구현되었는지 역 볼 수 있었습니다.😃😃🙏🏻✅