# Chapter01. 쏙쏙 들어오는 함수형 코딩에 오신 것을 환영합니다
# 1. 함수형 프로그래밍은 무엇인가요? (사전적 정의)
함수형 프로그래밍(functional programming, FP, 명사)
- 수학 함수를 사용하고 부수 효과를 피하는 것이 특징인 프로그래밍 패러다임
- 부수 효과 없이 순수 함수만 사용하는 프로그래밍 스타일
📍 추가 용어 정리
용어 | 정의 |
---|---|
부수 효과(side effect) | 함수에서 결괏값을 주는 것 외에 하는 모든 행동 |
순수 함수(pure function) | 인자에만 의존하고 부수 효과가 없는 함수로 인자에만 의존한다는 말은 같은 인자를 넣으면 항상 같은 결과를 돌려준다는 말이다. |
- 정의에 따르면 함수형 프로그래머는 항상 부수 효과를 피하고 순수 함수만 사용해야 할 것 같지만, 실제 함수형 프로그래머는 부수 효과와 순수하지 않은 함수를 사용한다.
# 2. 실용적인 측면에서 함수형 프로그래밍 정의의 문제점
- 부수 효과는 필요하다.
- 정의에는 부수 효과를 완전히 쓰지 말라는 것처럼 되어 있지만 필요할 때는 써야 한다.
- 함수형 프로그래밍은 부수 효과를 잘 다룰 수 있다.
- 함수형 프로그래밍에서는 순수하지 않은 함수를 잘 다룰 수 있는 기술이 많이 있다.
- 함수형 프로그래밍은 실용적이다.
- 정의만 보면 수학적이라 실제로 사용되지 않을 것 처럼 느껴지지만 오히려 함수형 프로그래밍으로 잘 만들어진 좋은 소프트웨어가 많이 있다.
# 3. 함수형 프로그래밍의 기본 개념
용어 | 개념 |
---|---|
액션 |
|
계산 |
|
데이터 |
|
- 액션은 호출하는 횟수나 호출하는 시점이 중요하고 계산, 데이터는 부르는 시점이나 횟수가 중요하지 않다.
- 계산은 실행 가능하나 데이터는 그렇지 않다.
- 데이터는 정적이고 보이는 그대로 이지만 계산은 실행하기 전까지 어떻게 동작할지 알 수 없다.
- 일반적으로 액션 보다는 계산이 쓰기 쉽고 계산 보다는 데이터가 쓰기 쉽다고 생각한다. 결과적으로 가장 쓰기 좋은 것은 데이터이다.
- 데이터와 계산은 실행 시점이나 횟수에 의존하지 않으므로 코드를 데이터와 계산으로 바꿀수록 분산 시스템에서 생기는 여러 가지 문제를 해결할 수 있다.
- 액션은 실행 시점과 횟수에 의존하기 때문에 여전히 문제가 되지만, 코드 전체에 영향을 주지 않도록 격리시키면 된다.