함수형 프로그래밍이란?

Minsun
Written by Minsun on
함수형 프로그래밍이란?

함수형 프로그래밍이란?

위키피디아에선 함수형 프로그래밍을 아래와 같이 설명한다.

함수형 프로그래밍

  1. 수학 함수를 사용하고 부수 효과(side effect)를 피하는 것이 특징인 프로그래밍 패러다임
  2. 부수 효과 없이 순수 함수(pure function)만 사용하는 프로그래밍 스타일

부수 효과는 함수가 리턴 값을 주는 것 외의 행동이다. 예를 들어 전역 상태를 수정하는 일을 말한다. 부수 효과는 함수를 호출할 때마다 발생하기 때문에 의도하지 않은 문제가 발생할 수 있다.

순수 함수는 인자에만 의존하고 부수 효과가 없는 함수이다. 인자에만 의존하기 때문에 항상 같은 인자를 넣으면 같은 결과 값을 반환하게 된다.

그러나 실제 업무에서 위와 같은 함수형 프로그래밍의 정의는 큰 도움이 되지 않는다.

  1. 부수 효과의 필요성

부수 효과는 소프트웨어를 실행하는 이유이다. 정의에 따르면 부수 효과는 피해야하지만 필요할 때에는 사용해야한다.

  1. 부수 효과를 잘 다루기 위한 도구

함수형 프로그래머는 순수하지 않은 함수도 사용한다. 그리고 이를 다루기 위한 많은 기술들이 있다.


액션, 계산, 데이터

함수형 프로그래밍은 코드를 액션, 계산, 데이터로 분류한다.

  1. 액션

액션은 호출하는 시점과 횟수에 의존하는 함수이다. 언제, 얼마큼 호출했는지가 중요하기 때문에 신중하게 호출되어야한다.

//이메일을 보내는 함수는 보내는 시점, 횟수에 의존한다.
sendEmail(to, from, subject, body)

//현재 시간을 반환해주는 함수는 호출되는 시점에 의존한다.
getCurrentTime()
  1. 계산

계산은 호출되는 시점이나 횟수가 중요하지 않다. 계산은 실행되지 전까지 어떻게 동작할지 알 수 없다. 입력값을 통해 출력값을 만들기 때문에 같은 입력값을 전달받에 되면 항상 같은 결과값을 반환한다. 언제, 어디서 계산해도 결과는 같고 외부에 영향을 주지 않는다.

sum(numbers)
getLength(str)
  1. 데이터

데이터는 정적이고 보이는 그대로이다.

Minsun

Minsun

Developer | Traveler | Thinker

Comments

comments powered by Disqus