[학습 정리]함수형 프로그래밍

김정현·2024년 7월 24일

함수형 프로그래밍

  • 프로그래밍 패러다임중 하나로 선언형 프로그래밍 방식이다.

선언형 프로그래밍

  • 명령형 프로그래밍과 상반되는 개념으로써 무엇을 할건지에 대해 설명하는 방식이다

    ❗무엇을 할건지?
    ex ) 길을 찾는다고 가정하에
    명령형 -> 나가서 오른쪽으로 꺾고 신호등을 건너서...~~
    선언형 -> 학교로 가

  • 프로그램의 로직을 표현할 때 결과를 중심으로 작성한다.

함수형 프로그래밍 특징

부수효과(side effect)가 없는 순수 함수를 1급 객체로 간주하여 파라미터나 반환값으로 사용할 수 있으며, 참조 투명성을 지킬 수 있다.

함수형 프로그래밍을 특징을 위와 같이 말할 수 있다. 그럼 함수형 프로그래밍에 특징에 나오는 키워드에 해서 하나씩 알아보자

부수효과(side effect)

함수가 외부 상태를 변경하거나 외부 상태에 의존하는것을 말한다.

  • 함수가 외부의 변수를 변경하는 경우
  • 함수가 파일을 읽거나 쓰는 등 외부와 상호작용하는 경우
  • 함수가 예외를 발생시키는 경우

순수 함수 (Pure Function)

부수효과(side effect)를 제거한 함수를 순수 함수라고 부르며 함수형 프로그래밍에서 사용하는 함수들은 순수 함수이다.

  • 부수효과(side effect)가 없음
  • 같은 입력값에 대해서는 항상 같은 출력값을 반환 (참조 투명성)
  • 외부 상태를 변경하지 않음

순수 함수의 장점

  • 순수 함수는 항상 같은 입력값에 대해 같은 출력값을 반환하기 때문에 함수의 동작을 쉽게 예측할 수 있다.
  • 외부 상태를 변경하지 않기 때문에 독립적으로 테스트하기 수월하다
  • 여러 함수를 병렬로 실행할 때 상태 충돌이 발생하지 않는다.
    ❗상태충돌(여러 작업이 동시에 같은 데이터 or 자원에 접근하여 조작하려고 할 때 발생)

참조 투명성

  • 동일한 입력값에 대해서는 항상 동일한 출력값을 반환해야 한다.
  • 참조 투명성을 통해 기존의 값은 변경되지 않고 유지된다(Immutable Data)

1급 객체

  • 변수나 데이터 구조에 담을 수 있다.
  • 함수의 파라미터로 전달할 수 있다.
  • 함수의 반환값으로 사용할 수 있다.

불변데이터

한번 생성된 이후에는 변경될 수 없는 성질

  • 새로운 데이터를 만들기 위해서는 기존 데이터를 바탕으로 새로운 인스턴스를 생성
  • 여러 스레드나 함수에서 동시에 접근하더라도 데이터의 일관성이 유지
  • 데이터가 변경되지 않기 때문에 코드의 동작을 예측하기 수월해짐
profile
안녕하세요 반갑습니다

0개의 댓글