함수형 프로그래밍

Yedam Lee·2023년 3월 19일
0

🔍 함수형 프로그래밍이란?

함수형 프로그래밍(Functional Programming)은 계산을 수학적 함수의 평가로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임입니다. 부수 효과(Side Effect)를 제거할 경우 프로그램의 동작을 이해하고 예측하기 쉬워지기 때문에 부수 효과가 없는 순수 함수(Pure Function)들로만 작성됩니다.

부수 효과(Side Effect)란?

  • 콘솔에 출력하거나 사용자의 입력을 읽는 것
  • 변수를 수정하거나, 객체의 필드를 저장하는 것
  • 예외를 던지거나 오류를 발생시키며 실행을 중단하는 것
  • 파일에 읽고 쓰는 작업

🔥 함수형 프로그래밍의 특징

1. 순수함수 (Pure function)

  • 동일한 입력에는 항상 같은 값을 반환해야 하는 함수
  • 함수의 실행이 외부에 영향을 끼치지 않는 함수
  • 함수 내부에서 인자의 값을 변경하거나 프로그램 상태를 변경하는 Side Effect가 없는 것

2. 비상태, 불변성 (Stateless, Immutability)

  • 함수형 프로그래밍에서의 데이터는 변하지 않는 불변성을 유지해야 한다.
  • 함수 외부에서 데이터를 수정하지 않음
  • 함수의 계산을 수행하는 동안 변수에 할당된 값들이 절대로 변하지 않음
  • 데이터의 변경이 필요한 경우, 원본 데이터 구조를 변경하지 않고 그 데이터의 복사본을 만들어서 그 일부를 변경하고, 변경한 복사본을 사용해 작업을 진행한다.

3. 선언형 함수 (Declarations)

명령형 프로그래밍은 무엇을 어떻게 할 것인가에 주목하고, 선언형 프로그래밍은 무엇을 할 것인가에 주목한다.
함수형 프로그래밍에서는 if,switch,for 등 명령문을 사용하지 않고 함수형 코드로 사용해야한다.
Javascript 에서는 filter,map,take,reduce 등의 함수형 코드를 사용한다.

4. 1급 객체와 고차함수 (Fist-class, Higher-order functions)

함수형 프로그래밍에서는 함수가 1급 객체가 된다. 1급 객체의 특징은 다음과 같다.

  • 변수나 자료 구조안에 삽입 가능
  • 파라미터로 전달 가능
  • 리턴 값으로 사용 가능
  • 동적으로 property 할당 가능

고차 함수의 특징은 다음과 같다.

  • 함수의 인자로 함수 전달 가능
  • 함수의 반환 값으로 함수를 사용 가능

💚 함수형 프로그래밍의 장점

  • 높은 수준의 추상화를 제공한다
  • 함수 단위의 코드 재사용이 수월하다
  • 불변성을 지향하기 때문에 프로그램의 동작을 예측하기 쉬워진다
profile
프론트엔드 개발자

0개의 댓글