함수형 프로그래밍은 함수의 조합으로 작업을 수행함을 의미한다
중요한 것은 이 작업이 이루어지는 동안 작업에 필요한 데이터와 상태는 변하징 않는다
아래 코드는 함수형 프로그래밍을 표현하는 수도 코드이다
f1 = encrypt1;
f2 = encrypt2;
f3 = encrypt3;
pure_value = "zzoon";
encrypted_value = get_encrypted(f1);
encrypted_value = get_encrypted(f2);
encrypted_value = get_encrypted(f3);
여기서 pure_value는 작업에 필요한 데이터고 작업이 수행되는 동안 변하지 않는다
get_encrypted()가 작업하는 동안 변할 수 있는 것은 오로지 입력으로 들어오는 함수뿐이다
f1, f2, f3는 외부(여기서는 pure_value)에 아무런 영향을 미치지 않는다
이런 함수를 순수 함수(Pure function)라고 한다
get_encrypted() 함수는 인자로서 f1, f2, f3 같은 순수 함수를 받는다
이렇게 함수를 또 하나의 값으로 간주하여 함수의 인자 혹은 반환값으로 사용할 수 있는 함수를 고계 함수(Higher-order function)라고 한다
이 예에서 프로그래머는 입력으로 넣을 암호화 함수를 새롭게 만드는 방식으로 암호화 방법을 개선할 수 있다
이와 같이 내부 데이터 및 상태는 그대로 둔 채 제어할 함수를 변경 및 조합함으로써 원하는 결과를 얻어내는 것이 함수형 프로그래밍의 중요한 특성이다
출처: 송형주, 고현준 저, 『인사이드 자바스크립트』, 한빛미디어(2014)