함수형 프로그래밍
- 프로그래밍 패러다임중 하나로
선언형 프로그래밍 방식이다.
선언형 프로그래밍
함수형 프로그래밍 특징
부수효과(side effect)가 없는 순수 함수를 1급 객체로 간주하여 파라미터나 반환값으로 사용할 수 있으며, 참조 투명성을 지킬 수 있다.
함수형 프로그래밍을 특징을 위와 같이 말할 수 있다. 그럼 함수형 프로그래밍에 특징에 나오는 키워드에 해서 하나씩 알아보자
부수효과(side effect)
함수가 외부 상태를 변경하거나 외부 상태에 의존하는것을 말한다.
- 함수가 외부의 변수를 변경하는 경우
- 함수가 파일을 읽거나 쓰는 등 외부와 상호작용하는 경우
- 함수가 예외를 발생시키는 경우
순수 함수 (Pure Function)
부수효과(side effect)를 제거한 함수를 순수 함수라고 부르며 함수형 프로그래밍에서 사용하는 함수들은 순수 함수이다.
- 부수효과(side effect)가 없음
- 같은 입력값에 대해서는 항상 같은 출력값을 반환 (참조 투명성)
- 외부 상태를 변경하지 않음
순수 함수의 장점
- 순수 함수는 항상 같은 입력값에 대해 같은 출력값을 반환하기 때문에 함수의 동작을 쉽게 예측할 수 있다.
- 외부 상태를 변경하지 않기 때문에 독립적으로 테스트하기 수월하다
- 여러 함수를 병렬로 실행할 때 상태 충돌이 발생하지 않는다.
❗상태충돌(여러 작업이 동시에 같은 데이터 or 자원에 접근하여 조작하려고 할 때 발생)
참조 투명성
- 동일한 입력값에 대해서는 항상 동일한 출력값을 반환해야 한다.
- 참조 투명성을 통해 기존의 값은 변경되지 않고 유지된다(Immutable Data)
1급 객체
- 변수나 데이터 구조에 담을 수 있다.
- 함수의 파라미터로 전달할 수 있다.
- 함수의 반환값으로 사용할 수 있다.
불변데이터
한번 생성된 이후에는 변경될 수 없는 성질
- 새로운 데이터를 만들기 위해서는 기존 데이터를 바탕으로 새로운 인스턴스를 생성
- 여러 스레드나 함수에서 동시에 접근하더라도 데이터의 일관성이 유지
- 데이터가 변경되지 않기 때문에 코드의 동작을 예측하기 수월해짐