포스트

순수 함수

순수 함수는 함수형 프로그래밍에서 동일한 입력에 대해 항상 동일한 출력을 반환하는 함수를 일컫는 말이다. 어떤 상황에서도 반환값이 일관되어 예측 가능한 동작을 보장한다.

두 가지 조건을 만족하면 순수 함수이다:

  • 동일한 입력은 항상 동일한 출력을 반환: 함수의 인자로 주어진 값만을 사용하여 결과를 계산한다. 함수는 함수 외부의 상태값을 참조하지 않는다.

  • 부수 효과 없음: 함수 실행 중에 함수 외부의 상태값을 변경하거나, 파일 입출력, 데이터베이스 접근 등 외부 상태에 영향을 주는 작업을 수행하지 않는다.

이러한 특징으로 클래스를 도입해 클래스에 각 함수가 의존할 상태값 필드를 정의하는 OOP에서는 순수함수를 쉽게 찾아보기는 어렵다. 대부분의 경우 클래스 메서드의 동작을 파악하기 위해서는 클래스의 상태값을 확인해야 한다.(이러한 사례가 OOP의 등장 이유이기도 하다.)


순수 함수는 다음과 같은 장점을 가진다:

  • 예측 가능
  • 병렬 처리에 유리: 순수 함수는 외부에 의존성을 갖지 않으므로, 여러 회의 병렬 호출도 안전하다.
  • 코드 재사용과 모듈화: 함수는 외부 상태에 의존하지 않으므로, 다른 코드에서도 수정 없이 재사용할 수 있다.