함수형 프로그래밍이란?
Written by Minsun on
Summary
함수형 프로그래밍이란?
위키피디아에선 함수형 프로그래밍을 아래와 같이 설명한다.
함수형 프로그래밍
- 수학 함수를 사용하고 부수 효과(side effect)를 피하는 것이 특징인 프로그래밍 패러다임
- 부수 효과 없이 순수 함수(pure function)만 사용하는 프로그래밍 스타일
부수 효과는 함수가 리턴 값을 주는 것 외의 행동이다. 예를 들어 전역 상태를 수정하는 일을 말한다. 부수 효과는 함수를 호출할 때마다 발생하기 때문에 의도하지 않은 문제가 발생할 수 있다.
순수 함수는 인자에만 의존하고 부수 효과가 없는 함수이다. 인자에만 의존하기 때문에 항상 같은 인자를 넣으면 같은 결과 값을 반환하게 된다.
그러나 실제 업무에서 위와 같은 함수형 프로그래밍의 정의는 큰 도움이 되지 않는다.
- 부수 효과의 필요성
부수 효과는 소프트웨어를 실행하는 이유이다. 정의에 따르면 부수 효과는 피해야하지만 필요할 때에는 사용해야한다.
- 부수 효과를 잘 다루기 위한 도구
함수형 프로그래머는 순수하지 않은 함수도 사용한다. 그리고 이를 다루기 위한 많은 기술들이 있다.
액션, 계산, 데이터
함수형 프로그래밍은 코드를 액션, 계산, 데이터로 분류한다.
- 액션
액션은 호출하는 시점과 횟수에 의존하는 함수이다. 언제, 얼마큼 호출했는지가 중요하기 때문에 신중하게 호출되어야한다.
//이메일을 보내는 함수는 보내는 시점, 횟수에 의존한다.
sendEmail(to, from, subject, body)
//현재 시간을 반환해주는 함수는 호출되는 시점에 의존한다.
getCurrentTime()
- 계산
계산은 호출되는 시점이나 횟수가 중요하지 않다. 계산은 실행되지 전까지 어떻게 동작할지 알 수 없다. 입력값을 통해 출력값을 만들기 때문에 같은 입력값을 전달받에 되면 항상 같은 결과값을 반환한다. 언제, 어디서 계산해도 결과는 같고 외부에 영향을 주지 않는다.
sum(numbers)
getLength(str)
- 데이터
데이터는 정적이고 보이는 그대로이다.
Comments