함수형 프로그래밍

함수형 프로그래밍 (Functional Programming) 요약

이 장에서는 Scala에서 함수형 프로그래밍을 어떻게 하는지 전반적으로 소개해요. 여기서 다루는 주제는 다음과 같아요.

  • 함수형 프로그래밍이란 무엇인가
  • 불변 값 (Immutable values)
  • 순수 함수 (Pure functions)
  • 함수는 값이다 (Functions are values)
  • 함수형 오류 처리 (Functional error handling)

앞에서도 말했듯이 함수형 프로그래밍은 아주 큰 주제라서, 이 책에서는 이 입문 개념들만 가볍게 짚어볼게요. 더 자세한 내용은 Reference 문서에서 확인할 수 있어요.

출처: Scala 3 Book

본문

Scala는 객체지향 언어이면서 동시에 함수형 언어예요. 이 장에서는 그 함수형 측면에 초점을 맞춰 핵심 개념을 하나씩 살펴봐요.

먼저 불변 값이 있어요. 함수형 프로그래밍에서는 값을 만든 뒤 그 값을 바꾸지 않는 걸 기본 원칙으로 삼아요. Scala에서는 val로 만든 값은 재할당할 수 없기 때문에, 코드가 예측 가능해지고 버그가 줄어들어요.

다음은 순수 함수예요. 순수 함수는 같은 입력이 주어지면 항상 같은 결과를 반환하고, 함수 바깥의 상태를 바꾸지 않아요. 이렇게 순수한 함수들은 테스트하기도 쉽고, 합성하기도 쉬워요.

함수는 값이라는 말은, 함수를 다른 값처럼 변수에 담거나 인자로 넘기거나 반환값으로 쓸 수 있다는 뜻이에요. 이걸 가능하게 해주는 게 람다와 고차 함수(HOF)인데, 이 덕분에 map, filter 같은 표현으로 간결하게 코드를 쓸 수 있어요.

마지막으로 함수형 오류 처리가 있어요. 함수형에서는 예외를 던지는 대신 결과를 값으로 표현하는 방식을 선호해요. Scala에서는 OptionEither 같은 타입이 그 역할을 해줘요.

더 알아보기 (Learn more)