함수형 프로그래밍은 수수 함수와 선언형 프로그래밍의 토대위에 함수 조합과 모나드 조합으로 코드를 설계하고 구현하는 기법입니다.
함수형 프로그래밍은 다음 세 가지 수학 이론에 기반을 두고 있습니다.
수학에서 함수는 값 x에 수식을 적용해 또다른 값 y를 만드는 역할을 하는데, 함수를 f라고 표기하면 값 x, y, f의 관게를 다음처럼 표현할 수 있습니다.
x ~> f ~> y
프로그래밍언어로 타입을 고려하여 표현하면 다음과 같습니다.
(x: T) ~> f ~> (y: R)
수학에서는 이런 관계를 일대일 관계라고 하고, 이런 동작을 하는 함수 f를 '매핑' 줄여서 '맵' 이라고 표현합니다. 타입스크립트에서 이러한 함수의 시그니처를 다음처럼 표현할 수 있습니다.
type MapFunc<T, R> = (T) => R
맵 함수의 가장 단순한 형태는 입력값 x를 가공 없이 그대로 반환하는 것입니다. 즉, 입력과 출력 타입이 같습니다. 함수형 프로그래밍에서 이러한 역할을 하는 함수 이름에는 보통 identity 혹은 간단히 I 라는 단어가 포함됩니다.
type MapFunc<T, R> = (T) => R
type IdentityFunc<T> = MapFunc<T, T>