함수형 프로그래밍(Functional Programming, FP)은 순수 함수와 불변 데이터를 중심으로 프로그램을 구성하는 패러다임이다. Haskell, Scala, Erlang이 대표적이며, Python, JavaScript, Java도 FP 개념을 지원한다.
핵심 개념
순수 함수 (Pure Function)
python
# 순수 함수: 같은 입력 → 항상 같은 출력, 부작용 없음
def add(a, b): return a + b
# 불순 함수: 외부 상태에 의존하거나 수정
total = 0
def add_to_total(n):
global total
total += n # 부작용!
불변성 (Immutability)
python
# 함수형: 원본 변경 없이 새 데이터 생성
numbers = [1, 2, 3, 4, 5]
doubled = [n * 2 for n in numbers] # 원본 유지
# 명령형: 원본 변경
numbers = [1, 2, 3, 4, 5]
for i in range(len(numbers)):
numbers[i] *= 2 # 원본 변경
고차 함수 (Higher-Order Function)
python
# 함수를 인수로 받거나 반환하는 함수
numbers = [1, 2, 3, 4, 5, 6]
evens = list(filter(lambda x: x % 2 == 0, numbers)) # [2, 4, 6]
doubled = list(map(lambda x: x * 2, numbers)) # [2, 4, 6, 8, 10, 12]
total = reduce(lambda a, b: a + b, numbers) # 21
관련 개념
- •객체지향 프로그래밍 — 대비되는 패러다임
- •Python — 멀티 패러다임으로 FP 지원
- •Scala — FP + OOP 하이브리드
참고문헌
- •Hutton, G. Programming in Haskell