Q : 함수적 프로그래밍이라는 무엇인가요?

A : 함수적 프로그래밍(Functional Programming)이라는 것은 함수를 사용해서 문제를 해결하러는 프로그래밍 방식입니다. 기본적으로 함수는 입력을 받고 출력을 만들어 기능을 담당합니다. 언제 어디서든지 동일한 입력에 대해서는 항상 같은 출력 결과를 나타냅니다. 곧 다른 출력 결과를 만들어 내는 내부 상태를 가지고 있지 않습니다. 함수적 프로그래밍의 대표적인 언어는 Haskell, Scheme, Clojure, Eralang, Scala등이 있으며, R과 Python 함수적 프로그래밍이 가능합니다.
함수적 프로그래밍에서는 입력은 연속적인 함수들을 계속해서 통과합니다. 각 함수는 입력을 받고 출력을 만들어 냅니다. 여기서 꼭 기억하셔야 할 점은 여기에 사용되는 함수는 꼭 순수함수이어야 합니다. 같은 입력에 대해서는 항상 같은 출력을 만들어야 하기 때문입니다.
함수적 프로그래밍의 장점은 아래와 같습니다.
1. 멀티코어 환경에서 동시성(concurrent)처리에 효과적이다.
2. 코드의 동작을 쉽게 추론할 수 있습니다.
3. 모듈성과 재사용성이 높아집니다.
4. 함수적 코드는 테스트하기 용이합니다.
요즘 분석에 많이 사용되는 R, Python, Scala등 언어가 함수적 프로그래밍을 지원하기 때문에 간단한 개념만 알고 계시면 될 거 같습니다.

관련용어 : 일급함수(First Class Function), 클로저(Closure), 순수함수(Pure Function), 게으른 연산(Lazy Evaluation)