함수형 프로그래밍
함수형 프로그래밍이란
함수형 프로그래밍은 수학적 함수(순수 함수)를 사용하고 부수효과를 피하는 프로그래밍 방식이다.
정의에 따르면 함수형 프로그래밍은 부수효과를 사용하지 않고 순수 함수만을 사용해야 할 것 처럼 보이지만, 애플리케이션 서비스를 만드려면 부수효과는 꼭 필요하며, 순수하지 않은 함수도 사용한다.
부수효과는 애플리케이션이 실행되는 이유이며, 순수하지 않은 함수를 잘 다룰 수 있는 기술들이 존재한다. (Functor, Monad)
함수형 프로그래밍 목표
부수효과(사이드 이펙트)를 완전히 제거하는 것이 아닌 비즈니스 로직을 처리하는 코드(순수 함수)와 부수효과를 일으키는 코드를 분리하는 것
함수형 프로그래밍에서는 부수효과를 일으키는 부분을 코드에서 분리하고 격리해서 기존의 부수효과로만 다뤘던 작업을 순수한것처럼 다룰 수 있게 추상화 한다.
수학적 함수란
수학에서 말하는 함수의 정의와 일치하기 때문에 수학적 함수라 불린다.
숨은 입출력이 없다. 즉, 값을 반환하는것 외에 부수적으로 일으키는 효과가 없다.
함수 호출횟수와 상관없이 같은 입력값이 주어지면 항상 동일한 출력값을 반환하는 참조 투명성의 특징을 갖고 있다.(예측 가능)
숨은 입출력 코드의 종류
사이드 이펙트: 값을 반환하는 것 외에 부수적으로 일으키는 효과. ex) 외부, 내부 상태를 변경하는 행위
예외:
try & catch
가 사용된 함수는 예외를 다루는 방식에 따라서 프로그램의 실행 흐름이 변경되는 부수효과가 발생한다.내외부 상태에 대한 참조: 입력값을 제외한 외부 데이터를 참조하는 경우
수학에서 함수는 일반적으로 하나의 집합을 다른 집합으로 대응시키는 대응관계를 나타낸다. 이 때, 첫 번째 집합은 정의역이라고 하고, 두 번째 집합은 치역이라고 한다.
Last updated