쏙쏙 들어오는 함수형 코딩 - #1, #2, #3

박상우·2023년 8월 5일
0
post-thumbnail

함수형 프로그램은 무엇인가?

  1. 수학 함수를 사용하고 부수효과를 피하는 것을 특징으로 하는 프로그래밍 패러다임
  2. 부수효과 없이 순수함수만 사용하는 프로그래밍

💡 부수효과 : 함수의 리턴값 이외에 동작하는 모든 행위
💡 순수함수: 인자에 의해서만 값이 결정되며 부수효과가 없는 함수

기존 함수형 프로그래밍의 문제점

  1. 부수 효과는 필요하다.
  2. 함수형 프로그래밍을 통해 부수 효과를 잘 다룰 수 있다.
  3. 함수형 프로그래밍은 실용적이다.

이론적으로 명시되어있는 함수형 프로그래밍에서 벗어나서 기술과 개념의 관점에서 실용적인 방식으로 함수형 프로그래밍을 사용하는 방식을 배워야한다.

액션, 계산, 데이터

함수형 프로그램에서는 크게 코드를 3가지 종류로 분리하고 있다.

  1. 액션 (Action)

    함수들 중에서도 호출하는 시점과 횟수를 고려해야하는 코드.

  2. 계산 (Calculation)

    실행 가능한 코드.

  3. 데이터 (Data)

    정적이며 보이는 그대로를 나타내는 코드.

함수형 프로그래밍이 액션, 계산, 데이터를 활용하는 이유

복잡한 프로그램이 점차 개발되면서 시간에 따라 변화하는 값을 모델링하고 관리하는 것을 잘하는 것이 중요해졌다. 함수형 프로그래밍은 앞서 액션, 계산, 데이터로 코드를 분리하여 시점과 횟수에 영향을 받는 영역을 따로 분리함으로서 안정적인 프로그램을 만들 수 있게 했다. 그리고 함수형 프로그래밍은 액션과 관련된 많은 부분을 계산에서 담당하게 하는 방법을 통해 불안정한 분산 시스템에 대해서 비교적 다루기 쉽도록 해주었다.

데이터

  • 데이터는 이벤트에 대한 사실
  • 일반적으로 숫자, 문자, 배열, 객체와 같이 기본 데이터 타입을 기반으로 하고, 더 복잡하고 정교한 데이터도 만들 수 있다.
  • 불변 데이터 구조(원본 보존)를 원칙으로 한다.
    • 카피-온-라이트: 변경할 때 복사본을 만듦
    • 방어적 복사: 보관하려는 데이터의 복사본을 만듦.
  • 데이터의 특징
    • 액션, 계산과 달리 직렬화 되어있어 전송, 읽기가 쉽다.
    • 데이터간 서로 동일성 비교가 가능하다.
    • 데이터는 여러가지 방식으로 해석이 가능하다. 여러가지 용도로 사용된다라고 해석할 수 있다.
    • 데이터는 그 자체로서는 기능을 하지 않는다. 그래서 반드시 해석이 필요하다.

계산

  • 입력값을 통해 출력값을 만들어내는 것.
  • 실행 시점과 횟수에 관계없이 항상 같은 입력값에 대해서 같은 출력값을 보여주어야 한다.
  • 일반적으로 함수를 통해 구현
  • 계산의 특징
    • 계산은 순수 함수로 제작해야 한다. 순수함수란 외부에 영향을 주거나, 받지 않고, 동일한 입력값에 대해서 항상 같은 출력값을 보여주는 함수이다.
    • 액션과 같이 함수로서 만들어지지만 액션과 달리 실행 시점이나 횟수를 고려하지 않는다.
    • 입력값에 대한 출력값을 통해 테스트하기 쉽다.
    • 계산과 계산을 조합하여 더 큰 수준의 계산을 만들어 낼 수 있다.

액션

  • 서비스, 제품에 직접 영향을 주는 요소.
  • 일반적으로 함수를 통해 구현된다.
  • 액션은 실행되는 시점과 횟수에 의존적이다.
  • 액션은 계산과 달리 순수하지 않은 함수이고, 함수 내부에 외부에 영향을 주거나 받는 부수 효과를 포함하고 있다.
  • 액션의 특징
    • 액션은 액션 이외의 환경에 영향을 주기 때문에 최대한 적게 사용되어야 한다.
    • 액션은 액션의 목적에 해당하지 않는 코드는 모두 계산과 데이터로 분리되어야 한다.
    • 액션은 부수 효과를 포함하지만, 부수효과를 제어함으로서 더욱 범용성있게 사용하도록 설계할 수도 있다.
profile
나도 잘하고 싶다..!

0개의 댓글