함수형 프로그래밍

함수형 프로그래밍이란

함수형 프로그래밍은 수학적 함수(순수 함수)를 사용하고 부수효과를 피하는 프로그래밍 방식이다.

정의에 따르면 함수형 프로그래밍은 부수효과를 사용하지 않고 순수 함수만을 사용해야 할 것 처럼 보이지만, 애플리케이션 서비스를 만드려면 부수효과는 꼭 필요하며, 순수하지 않은 함수도 사용한다.

부수효과는 애플리케이션이 실행되는 이유이며, 순수하지 않은 함수를 잘 다룰 수 있는 기술들이 존재한다. (Functor, Monad)

함수형 프로그래밍 목표

부수효과(사이드 이펙트)를 완전히 제거하는 것이 아닌 비즈니스 로직을 처리하는 코드(순수 함수)와 부수효과를 일으키는 코드를 분리하는 것

함수형 프로그래밍에서는 부수효과를 일으키는 부분을 코드에서 분리하고 격리해서 기존의 부수효과로만 다뤘던 작업을 순수한것처럼 다룰 수 있게 추상화 한다.

수학적 함수란

수학에서 말하는 함수의 정의와 일치하기 때문에 수학적 함수라 불린다.

  • 숨은 입출력이 없다. 즉, 값을 반환하는것 외에 부수적으로 일으키는 효과가 없다.

  • 함수 호출횟수와 상관없이 같은 입력값이 주어지면 항상 동일한 출력값을 반환하는 참조 투명성의 특징을 갖고 있다.(예측 가능)

숨은 입출력 코드의 종류

  • 사이드 이펙트: 값을 반환하는 것 외에 부수적으로 일으키는 효과. ex) 외부, 내부 상태를 변경하는 행위

  • 예외: try & catch가 사용된 함수는 예외를 다루는 방식에 따라서 프로그램의 실행 흐름이 변경되는 부수효과가 발생한다.

  • 내외부 상태에 대한 참조: 입력값을 제외한 외부 데이터를 참조하는 경우

수학에서 함수는 일반적으로 하나의 집합을 다른 집합으로 대응시키는 대응관계를 나타낸다. 이 때, 첫 번째 집합은 정의역이라고 하고, 두 번째 집합은 치역이라고 한다.

Last updated