함수형 프로그래밍이란

함수형 프로그래밍이란

함수형 프로그래밍에 대한 기본 개념을 정리

함수형 프로그래밍이란

함수형 프로그래밍은 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나이다. (출처: 위키백과)

함수의 응용을 강조하는 프로그래밍 기법이다.

함수형 프로그래밍은

  • 순수 함수를 조합
  • 프로그램의 상태를 불변하게 하여 부작용을 제거

의 원칙을 가진다.

명령형 프로그래밍, 객체지향 프로그래밍괴과 같은 프로그래밍 패러다임의 하나이다.

순수함수

순수함수 (Pure functions) 는 함수형 프로그래밍에서 중요한 개념이다.

다음과 같은 원칙을 가진다.

  • 같은 입력에 대해 항상 같은 출력값을 내놓아야 한다.
  • 부작용이 없어야 한다.

예를 들어

function add(a, b) {
    return a + b
}

위와 같은 코드는 변수 a, b를 인자로 받아 항상 같은 값인 a+b를 출력한다.

add(3, 4) 를 100번을 돌려봐도 항상 7이란 동일한 값이 나온다.

그러므로 순수함수이다.

var c = 5
function add(a, b) {
   return a + b + c
}

위 함수도 앞서 나온 함수처럼 덧셈을 수행하지만, 함수 외부의 변수 c가 결과값에 관여하고 있다.

add(2, 3) 를 실행하면 10을 반환할 것이다.

하지만 c의 값을 변경한 다음 add를 실행하면 이전과는 다른 결과값이 반환 될 것이다.

이처럼 외부요소인 c가 결과값에 영향을 미치므로 항상 동일 입력에 대해 동일 결과가 나오지 않는다.

그러므로 순수함수가 아니다.

순수함수는 데이터를 불변하게 하여 결과값을 예측가능하게 해주고

외부의 영향을 받지 않게 해주어 부작용을 없애주어 코드를 더 쉽게 이해할 수 있게 해준다.

익명함수

익명함수는 함수의 이름을 지정하지 않고도 함수를 생성할 수 있다는 개념이다.

var app = function() {
    console.log('익명 함수 호출')
}

위 자바스크립트 코드처럼 함수의 이름을 지정하지 않고 함수를 생성할 수 있다.

함수를 인자로 사용하거나 재사용할 필요가 없는 함수를 선언할때 도움이 된다.

고계함수

고계함수 개념은 함수를 ‘값’으로 취급할 수 있다는 것을 의미한다.

프로그래밍에서는 보통 ‘값’을 인자로 받고 ‘값’을 결과로 출력한다.

함수형 프로그래밍에서는 함수도 값처럼 사용될 수 있다.