프론트엔드/함수형 프로그래밍

함수형 프로그래밍과 부수효과

정현우12 2023. 1. 3. 00:24

패캠의 "TypeScript를 활용한 함수형 프로그래밍 온보딩"의 함수형 프로그래밍 부분을 듣고 정리해봤다.

함수형 프로그래밍과 부수효과

함수형 프로그래밍: 작은 순수함수로 프로그램을 분해하고 이를 합성해 프로그래밍

  • 함수 합성해 복잡한 프로그램 쉽게 만들기
  • 부수효과를 공통적 방법으로 추상화

부수효과

값 반환 이외에 부수적으로 일으키는 효과

  • 변수나 상태 바꾸거나 수정
  • 화면이나 파일에 데이터 쓰는 IO 작업
  • 다른 부수효과가 있는 함수나 상태값에 의존
let c
function dododo() {...}
function doSomething(a, b) {
    c = 2 // 변수의 상태 바꾸거나 수정
    dododo(c) // 다른 부수효과 있는 함수나 상태값에 의존
    document.body.innerHTML = `${a} + ${b}` // 화면에 데이터 씀
}

부수효과는 함수 합성을 어렵게 만든다.

순수함수

똑같은 매개변수를 받으면 항상 같은 값을 반환하는 함수

모든 정의역에 대해 치역을 가진다. (전함수)

  • 부수효과 없음
  • 항상 예측 가능한 결과

함수 합성

여러 개 함수 합성해서 새로운 함수 생성 - 순수함수들을 합성해야 예측 가능해진다.결함이 없다

고차 함수도 활용한다. (함수 매개변수로 함수)

가독성 좋고, 깔끔해진다.

const saleText = O.mapOrElse(optionDiscountPrice,(discountPrice) => `(${discountPrice}원 할인)`, '')