https://jongminfire.dev/함수형-프로그래밍이란

https://medium.com/@lazysoul/함수형-프로그래밍이란-d881230f2a5e

일련의 코딩 접근 방식이며, 자료처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임을 의미한다.

함수형 프로그래밍 언어로 설계된 클로저,스칼라,하스켈 등의 언어가 있고, 자바스크립트,코틀린,파이썬 등에도 최근 버전에 함수형 프로그래밍 문법이 추가 되었다.

함수형 프로그래밍의 컨셉

  1. 변경 가능한 상태를 불변상태(Immutab)로 만들어 SideEffect를 없애자.
  2. 모든 것은 객체이다.
  3. 코드를 간결하게 하고 가독성을 높여 구현할 로직에 집중 시키자.
  4. 동시성 작업을 보다 쉽게 안전하게 구현 하자.

함수형 프로그래밍의 특징

1. 순수함수 (Pure function)

let num = 1;

function add(a) {
    return a + num;
}

위와 같은 예제에서는 add라는 함수 안에서 전역으로 선언된 변수인 num을 참조하기 때문에 순수함수라고 볼 수 없다.

*// 순수함수*
function add(a, b) {
    return a + b;
}

const result = add(2, 3);

위와 같이 add의 함수가 프로그램 실행에 영향을 미치지 않고 입력 값에 대해서만 값의 변환이 있으므로 순수함수이다.