함수형 프로그래밍이란

Keunjae Song·2020년 3월 11일
0

fp

목록 보기
1/6

스칼라로 배우는 함수형 프로그래밍을 읽고 정리한 글입니다.

FP(Functional Programming)의 기본 전제는 프로그램 코드를 오직 순수 함수(pure function)으로만 구성한다는 것이다.
여기서 순수 함수는 부수 효과(side effect)를 발생시키지 않는 함수를 의미하는데, 부수 효과가 있는 함수란 단지 결과를 돌려주는 것 이외의 어떤 일을 수행하는 함수를 의미한다.

저자가 얘기하는 부수 효과, 즉 "그냥 결과를 돌려주는 것 이외의 어떤 일"의 예는 아래와 같다.

  • 변수 수정
  • 자료구조를 제자리에서 수정한다.
    • 저는 "이미 데이터가 할당된 컬렉션에 새로운 데이터로 할당한다" 정도로 이해하고 있습니다.
  • 객체의 필드를 설정한다.
  • 예외를 던지거나 오류를 내면서 실행을 중단한다.
  • 콘솔에 출력하거나 사용자의 입력을 받아들인다.
  • 화면에 그린다.

그렇다면 부수 효과 없이 프로그래밍을 한다는 것은 결국 위에 얘기한 항목들을 전혀 수행하지 못한다는 것일까?

변수에 값을 다시 대입할 수 없다면 변하는 자료는 어떻게 다루어야 하며, 예외를 던지지 않고서 오류를 어떻게 처리해야 할까?

또한, 부수 효과를 없애기 위해 입출력을 배제해야 한다면, 실제로 입출력 수행이 필요한 프로그램을 개발하지 못한다는 것일까?

이에 대해 저자의 답은 FP는 "프로그램을 작성하는 방식에 대한 제약일 뿐, 표현 가능한 프로그램의 종류에 대한 제약이 아니다" 라고 얘기한다.

(이 책에서는 입출력 수행하는 프로그램, 오류 처리 프로그램, 자료 수정 프로그램을 부수 효과 없이 작성하는 방법을 소개하고 있다.)

결국 순수 함수들로 프로그램을 작성하면 모듈성이 증가하며 그에 따라 테스트가 결국 쉬워지게 된다.

또한, 순수 함수들은 어떤 입력에 대한 결과를 돌려줄 뿐, 위에서 얘기한 항목들과 같은 부수 효과들을 배제하기 때문에 더욱 버그가 생길 가능성이 낮다.

0개의 댓글