카테고리 없음
[함수형 프로그래밍] 함수형 프로그래밍
by hbIncoding
2024. 7. 24.
1. 프로그래밍 패러다임의 하나로, 함수의 사용과 함수 호출을 중심으로 프로그램을 구성하는 방식입니다. 이 접근법은 순수 함수(pure functions), 고차 함수(higher-order functions), 불변성(immutability), 함수 합성(function composition) 등을 중요시합니다.
- 순수 함수
- 같은 입력값에 대해 항상 같은 출력값을 반환하는 함수
- 함수 실행 중에 외부 상태를 변경하지 않으며, 함수의 실행이 외부 상태에 영향을 받지 않음.
// 순수 함수 예제
function add(a, b) {
return a + b;
}
- 고차 함수 (Higher-Order Functions)
// 고차 함수 예제
function applyOperation(a, b, operation) {
return operation(a, b);
}
const result = applyOperation(2, 3, add); // 5
- 불변성 (Immutability)
- 데이터의 상태를 변경하지 않으며, 변경이 필요할 경우 새로운 데이터를 생성.
- 원본 데이터를 변경하지 않고, 복사본을 만들어서 사용.
// 불변성 예제
const numbers = [1, 2, 3, 4];
const newNumbers = [...numbers, 5]; // [1, 2, 3, 4, 5]
- 함수 합성 (Function Composition)
- 여러 함수를 조합하여 새로운 함수를 만드는 것.
- 작은 함수들을 결합하여 복잡한 연산을 수행하는 함수로 만듦.
// 함수 합성 예제
const compose = (f, g) => x => f(g(x));
const addOne = x => x + 1;
const double = x => x * 2;
const addOneThenDouble = compose(double, addOne);
console.log(addOneThenDouble(2)); // 6
2. 함수형 프로그래밍의 장점
- 예측 가능성: 순수 함수는 같은 입력에 대해 항상 같은 출력을 반환하므로, 프로그램의 동작을 예측하기 쉬움.
- 테스트 용이성: 순수 함수는 외부 상태에 의존하지 않으므로 테스트가 용이함.
- 병렬 처리 용이성: 불변 데이터를 사용하기 때문에 병렬 처리가 쉬워짐.
- 코드의 가독성 및 유지보수성 향상: 함수형 프로그래밍은 선언적(declarative) 스타일을 채택하므로 코드가 간결하고 이해하기 쉬움.