[javascript] 함수형 자료 구조

함수형 프로그래밍은 불변성을 강조하고 데이터를 부작용 없이 다루는데 초첨을 맞춥니다. 자바스크립트에서 함수형 자료 구조를 사용함으로써 이러한 원칙을 따를 수 있습니다.

배열 (Arrays)

배열은 함수형 프로그래밍에서 중요한 자료 구조입니다. 배열의 원소를 변경하지 않고 새로운 배열을 만들어 내는 메서드를 많이 사용합니다. 예를 들어, map, filter, reduce와 같은 고차함수는 복제 없이 배열을 다룬다는 특징이 있습니다.

// 예시: map 함수를 사용하여 모든 요소에 2를 곱한 새로운 배열을 만드는 방법
const originalArray = [1, 2, 3, 4, 5];
const doubledArray = originalArray.map(num => num * 2);
console.log(doubledArray);  // [2, 4, 6, 8, 10]

객체 (Objects)

객체 역시 함수형 프로그래밍에서 기본적인 자료 구조 중 하나입니다. 객체를 변경하지 않고 새로운 객체를 반환하는 방식으로 다루는 것이 중요합니다.

// 예시: 객체를 병합하여 새로운 객체를 만드는 방법
const originalObject = { name: 'Alice', age: 30 };
const updatedObject = { ...originalObject, age: 31 };
console.log(updatedObject);  // { name: 'Alice', age: 31 }

immutable.js 라이브러리

불변성을 보장하기 위해 immutable.js와 같은 라이브러리를 사용할 수 있습니다. 이 라이브러리를 사용하면 불변성을 유지하는 작업이 간단해지며, 복잡한 데이터 구조를 다루는 데 효과적입니다.

// immutable.js를 사용한 예시
const { Map } = require('immutable');
const originalMap = Map({ name: 'Bob', age: 25 });
const updatedMap = originalMap.set('age', 26);
console.log(updatedMap.toJS());  // { name: 'Bob', age: 26 }

결론

함수형 자료 구조를 사용하면 객체나 배열의 불변성을 유지하고 부작용을 최소화할 수 있습니다. 이는 코드의 안정성과 예측 가능성을 높이는 데 도움이 됩니다.


참고 문헌: