함수형 프로그래밍을 알아보기 전에 성공적인 프로그래밍에 대해서 생각해보자.
함수형 프로그래밍은 성공적인 프로그래밍을 위해 부수 효과를 미워하고, 조합성을 강조하는 프로그래밍 패러다임이다.
순수함수란 부수 효과가 없는 함수를 말한다.
add
함수는 순수함수인가? YES
function add(a, b) {
return a + b;
}
console.log(add(10,5));
console.log(add(10,5));
console.log(add(10,5));
함수가 리턴 값으로 결과를 만드는 것 외에 외부 결과에 영향을 미치는 것을 부수 효과라고 하는데, 순수함수는 이러한 부수 효과가 없는 함수를 말한다.
그렇다면 순수함수가 아닌 함수의 형태는 어떠한가?
let c = 10;
function add2(a, b) {
return a + b + c;
}
c
변수가 변할 수 있다고 가정한다면, add2
는 순수함수가 아니게 된다.
단, c
가 상수라면 이 함수는 순수함수라고 할 수 있다.
일급 함수는 다음과 같은 특징을 가진다.
var f1 = function(a) { return a * a; }; // 1. 변수에 함수가 담길 수 있다.
console.log(f1);
var f2 = add; // 기존에 선언된 함수도 동일하게 할당할 수 있다.
console.log(f2);
function f3(f) {
console.log(f);
return 10;
}
function f3(f) {
return f();
}
이처럼,
일급 함수
라는 개념과순수 함수
라는 특징을 이용하여 함수의 조합성을 높이는 것이 함수형 프로그래밍이다.
함수형 프로그래밍을 통해 언제 평가해도 상관 없는
순수 함수
들을 만들어 값으로 들고 다니다가, 가장 적절한(필요한) 시점에 평가하여 다양한 로직을 만들어 나갈 수 있다.