함수형 프로그래밍은 데이터를 효과적으로 처리하기 위해 함수를 조합하고 연속적으로 적용하는 것을 강조하는 프로그래밍 패러다임입니다. 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
를 사용하여 조합하고 있습니다. 이렇게 작성된 composedFunction
은 square
함수의 결과를 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
함수를 순차적으로 연결하여 파이프라인을 구성하고 있습니다. 이렇게 작성된 pipedFunction
은 square
함수의 결과를 addOne
함수에 넘기고, 그 결과를 다시 multiply
함수에 넘기는 동작을 수행합니다. 결국 pipedFunction(3)
은 multiply(addOne(square(3)))
와 동일한 결과인 14를 출력합니다.
참고 자료
- Ramda 공식 문서
- 함수형 프로그래밍 소개 - MDN
- [함수 조합(Compose)과 파이프라인 - JavaScript Info](https://ko.javascript.info/composition-composing-functions