1. 함수형 프로그래밍 (Functional Programming) ☞ 프로그래밍 패러다임 참조
ㅇ 함수들의 집합/조합으로써 프로그램을 구성
- 프로그램 제어를 함수로써 추상화시킴
ㅇ 큰 틀에서, 선언적/적응적 프로그래밍(Declarative/Applicative Programming) 기법에 속함
- 외부에서의 부수 효과를 제거하고,
- 불변성을 지향하는 프로그램을 작성하고,
- 순수 함수를 선언적으로 사용하는 프로그래밍 방법론
ㅇ 例) LISP, Scheme, Haskell 등
2. 함수형 프로그래밍의 특징
ㅇ 반복문 보다는 재귀호출 선호
- 임시 변수에 의한 반복문 처리 보다는 재귀호출에 의한 구현 선호
- 재귀 호출이 기본이고, 괄호로 프로그램 내포구조를 나타냄
ㅇ 실행시, 함수의 생성 및 동작이 가능함
ㅇ 함수의 인수 또는 반환값으로 함수를 전달할 수 있음 (일급 함수)
ㅇ 상태 변화를 줄이고, 적정 관리할 수 있도록 추구함
- 변수의 사용을 억제하여, 가급적 상태 변경을 피하려고 함
ㅇ 통상, 가독성, 신뢰성, 정확성 면에서,
- 함수형 프로그래밍은, 명령형 프로그래밍 보다 더 좋다고 여겨짐
- 例로써,
. 명령형 프로그래밍은, 프로그램 실행 중 변수가 변하는 상태를 갖으므로, 이를 신경써야 하나,
. 함수형 프로그래밍은, 변수나 상태를 갖지 않음
ㅇ 무 상태성(stateless), 불변성(immutability)를 지향 함
3. 순수 함수 (Pure Function)
ㅇ 주어진 입력에 만 의존할 뿐, 어떤 외부 상태에도 의존하지 않고,
- 함수 스코프 밖에 어떠한 변경도 하지 않으며,
- 미리 헤아릴 수 있는 일정한 결과값 만을 내놓는,
- 즉, 부수 효과가 없고, 상태 변화를 일으키지 않는 함수
ㅇ 순수성 (Purity) 또는 참조 투명성 (Referential Transparency)
- 함수의 인수와 리턴값 사이에 순수한 매핑 관계
- 즉, 어떤 함수가 항상 동일 입력에 동일 출력 결과 만을 내는 관계
. 함수 반환값이 외부 변수에 영향을 받으면 안됨