자바스크립트 함수형 프로그래밍

Kim Jin Hyeok·2021년 3월 2일
0

함수형 프로그래밍의 개념

함수형 프로그래밍이란 함수의 조합으로 작업을 수행함을 의미한다.

다음은 함수형 프로그래밍을 설명하기 위한 수도 코드이다.

f1 = encrypt1;
f2 = encrypt2;
f3 = encrypt3;

특정 문자열을 암호화하는 함수 여러 개, 그리고 입력 값은 정해지지 않았으며 서로 다른 암호화 알고리즘만 있다

pure_value = 'kim'
encrypted_value = get_encrypted(x);

pure_value 는 암호화할 문자열, encrypted_value는 암호화 된 문자열, get_encrypted()는 암호화 함수를 받아서 입력받은 함수로 pure_value를 암호화한 후 반환한다.

즉, 다음과 같이 사용한다.

encrypted_value = get_encrypted(f1);

여기서 pure_value는 작업에 필요한 데이터고 작업이 수행되는 동안 변하지 않는다. 반대로 이야기하면 f1, f2, f3는 외부(여기선 pure_value)에 아무런 영향을 미치지 않는 함수이며 이러한 함수를 순수 함수 pure function 이라고 한다. 외부에 영향을 미치지 않으므로 다른 작업에 활용해도 문제가 없다.

또 함수를 인자 혹은 반환값으로 사용할 수 있는 함수를 고계 함수 higher-order function 이라고 한다. 예제에선 get_encrypted() 를 말한다.

이러한 개념들을 이용해 함수 구현을 해서 높은 수준의 모듈화가 가능하다.

자바스크립트에서의 함수형 프로그래밍 예시

자바스크립트는 함수가 일급 객체이고 클로저 구현이 가능하기에 함수형 프로그래밍이 가능하다. 위 예제를 구현한다면 다음과 같다.

var f1 = function(input) {
    var result;
    /* 암호화 작업 수행 */
    result = 1;
    return result;
}

var get_encrypted = function(func) {
    var pure_value = 'kim';

    return function(){
        return func(pure_value);
    }
}

var encrypted_value = get_encrypted(f1)();


참고: 송형주, 고현준, 인사이드 자바스크립트(2014)

0개의 댓글