[javascript] Ramda를 활용한 함수 조합(Compose)과 파이프라인

함수형 프로그래밍은 데이터를 효과적으로 처리하기 위해 함수를 조합하고 연속적으로 적용하는 것을 강조하는 프로그래밍 패러다임입니다. JavaScript에서는 Ramda라는 라이브러리를 사용하여 함수를 조합하고 파이프라인 형태로 연결할 수 있습니다. 이를 통해 코드를 더 간결하고 가독성 있게 작성할 수 있습니다.

함수 조합(Compose)

함수를 조합하는 것은 작은 단위의 함수를 조합하여 더 큰 동작을 수행하는 것을 의미합니다. Ramda에서는 compose 함수를 사용하여 함수 조합을 할 수 있습니다.

const multiply = (x) => x * 2;
const addOne = (x) => x + 1;
const square = (x) => x * x;

const composedFunction = R.compose(multiply, addOne, square);

console.log(composedFunction(3)); // Output: 20

위의 코드에서는 multiply, addOne, square라는 세 개의 함수를 compose를 사용하여 조합하고 있습니다. 이렇게 작성된 composedFunctionsquare 함수의 결과를 addOne 함수에 넘기고, 그 결과를 다시 multiply 함수에 넘기는 동작을 수행합니다. 결국 composedFunction(3)multiply(addOne(square(3)))와 동일한 결과인 20을 출력합니다.

파이프라인(Pipe)

파이프라인은 함수를 연속적으로 적용하여 데이터를 처리하는 것을 의미합니다. Ramda에서는 pipe 함수를 사용하여 파이프라인을 구성할 수 있습니다.

const multiply = (x) => x * 2;
const addOne = (x) => x + 1;
const square = (x) => x * x;

const pipedFunction = R.pipe(square, addOne, multiply);

console.log(pipedFunction(3)); // Output: 14

위의 코드에서도 마찬가지로 square, addOne, multiply 함수를 순차적으로 연결하여 파이프라인을 구성하고 있습니다. 이렇게 작성된 pipedFunctionsquare 함수의 결과를 addOne 함수에 넘기고, 그 결과를 다시 multiply 함수에 넘기는 동작을 수행합니다. 결국 pipedFunction(3)multiply(addOne(square(3)))와 동일한 결과인 14를 출력합니다.

참고 자료