함수형 프로그래밍이란
프로그램을 순수 함수(pure function)들로만, 다시 말해서 부수 효과(side effect)가 없는 함수들로만 구축한다는 것이다.
부수 효과
결과를 돌려주는것 이외의 어떤 일을 수행하는 함수. 예를 몇가지 들자면 다음과 같다.
- 변수를 수정한다.
- 예외(exception)를 던지거나 오류를 내면서 실행을 중단한다.
- 콘솔에 출력하거나 사용자의 입력을 읽어들인다.
함수형 프로그램의 이점
순수 함수들로 프로그램을 작성하면 모듈성(modularity)이 증가한다. 모듈성 덕분에 순수 함수는 검사(test), 재사용, 병렬화, 일반화, 분석이 쉽다.
참조 투명성(referential transparency)
참조 투명성은 함수가 아니라 표현식(expression)의 한 속성이다. 어떤 표현식을 그 평가 결과로 바꾸어도 프로그램의 의미가 변하지 않는다면 그 표현식은 참조에 투명한 것이다. 예를 들어 2 + 3은 하나의 표현식이다. 이 표현식은 값 2와 3에 순수 함수 +를 적용한다. 이 표현식에는 부수 효과가 없다. 이 표현식의 평가(evaluation)는 항상 5라는 같은 결과를 낸다. 실제로, 프로그램에 있는 모든 2 + 3을 값 5로 바꾸어도 프로그램의 의미는 전혀 바뀌지 않는다.
치환 모형
참조 투명성은 함수가 수행하는 모든 것이 함수가 돌려주는 값으로 대표된다는 불변 조건을 강제한다. 이러한 제약을 지키면 치환 모형이라고 한다. 참조 투명성은 프로그램에 대한 등식적 추론(equational reasoning)을 가능하게 한다.