[javascript] Ramda의 사용 예시

Ramda는 JavaScript 함수형 프로그래밍 라이브러리로, 코드를 간결하고 읽기 쉽게 만들어줍니다. 이번 글에서는 Ramda의 몇 가지 주요 함수들을 사용하는 예시를 살펴보겠습니다.

1. map

map 함수는 배열 또는 리스트의 각 요소에 대해 주어진 함수를 적용하고, 결과를 새로운 배열로 반환합니다. Ramda의 map 함수는 일반적인 Array.prototype.map과 비슷하지만 몇 가지 차이점이 있습니다.

const R = require('ramda');

const numbers = [1, 2, 3, 4, 5];

const squaredNumbers = R.map(Math.pow(2))(numbers);
console.log(squaredNumbers); // [2, 4, 8, 16, 32]

위의 예시에서 R.map(Math.pow(2))Math.pow(2) 함수를 각 요소에 대해 적용하라는 의미입니다. 따라서 squaredNumbers 배열은 numbers 배열의 각 요소를 2의 거듭제곱으로 만든 새로운 배열입니다.

2. filter

filter 함수는 배열 또는 리스트의 각 요소를 주어진 조건 함수에 적용하고, 조건을 만족하는 요소만으로 이루어진 새로운 배열을 반환합니다.

const R = require('ramda');

const numbers = [1, 2, 3, 4, 5];

const evenNumbers = R.filter(n => n % 2 === 0)(numbers);
console.log(evenNumbers); // [2, 4]

위의 예시에서 R.filter(n => n % 2 === 0)는 주어진 배열에서 짝수만을 추출하는 함수입니다. evenNumbers 배열은 numbers 배열에서 짝수만을 포함하게 됩니다.

3. reduce

reduce 함수는 배열 또는 리스트의 요소들을 하나의 값으로 줄이는 함수입니다.

const R = require('ramda');

const numbers = [1, 2, 3, 4, 5];

const sum = R.reduce((acc, cur) => acc + cur)(0)(numbers);
console.log(sum); // 15

위의 예시에서 R.reduce((acc, cur) => acc + cur)(0)numbers 배열의 모든 요소를 더하는 역할을 합니다. sum 변수에는 numbers 배열의 모든 요소를 더한 결과가 저장됩니다.

4. compose

compose 함수는 여러 개의 함수를 합성해서 새로운 함수를 만드는 함수입니다. 합성된 함수는 오른쪽에서 왼쪽으로 평가됩니다.

const R = require('ramda');

const addTwo = x => x + 2;
const multiplyThree = x => x * 3;

const addTwoAndMultiplyThree = R.compose(multiplyThree, addTwo);
console.log(addTwoAndMultiplyThree(5)); // 21

위의 예시에서 R.compose(multiplyThree, addTwo)addTwo 함수를 먼저 적용하고 그 결과를 multiplyThree 함수에 적용하는 새로운 함수를 반환합니다. 따라서 addTwoAndMultiplyThree(5)5addTwo 함수를 적용한 뒤 그 결과에 multiplyThree 함수를 적용한 것과 같습니다.

이 외에도 Ramda는 다양한 유틸리티 함수와 기능을 제공하므로, 자세한 내용은 공식 문서를 참고하시기 바랍니다.