순수함수란 ?

jini·2023년 4월 5일
0

CS🎀

목록 보기
10/13
post-thumbnail

🗂 순수함수란 무엇인가요? 불변성과 사이드 이펙트와 연결하여 설명해주세요.

순수 함수란

함수형 프로그래밍에서는 어떤 외부 상태에 의존하지도 않고 변경시키지도 않는, 즉 부수 효과(Side Effect)가 없는 함수를 순수함수(Pure function)이라고 한다. 즉, 동일한 입력이 주어지면 항상 동일한 출력을 반환하는 함수.

반대로 부수 효과가 있는 함수는 비순수 함수(Impure function) 이라고 한다.

  • 동일한 인수가 전달되면 언제나 동일한 값을 반환한다. (외부 상태에 의존하지 않는다)
  • 외부상태를 변경하지 않는다.

sideEffect가 발생할 경우 참조 데이터가 변경되기 때문에 의도하지 않는 오류와 반응이 발생할 경우가 있습니다.

자바스크립트에서 순수함수를 제작하기 위해서 데이터의 불변성을 유지하는 것이 중요합니다. 함수의 전달인자로 참조 자료형이 전달되는 경우, 의도치 않게 해당 객체 자체를 바꾸는 사이드 이펙트를 만들수도 있고, 이는 해당 데이터의 불변성을 손상시킵니다. 그래서 배열의 불변성을 보장하는 메서드인 map, filter, reduce등을 많이 씁니다.

순수함수를 사용하는 이유

비순수함수를 사용하면 다음과 같은 문제가 발생한다.

  • 함수가 외부 상태를 변경하면 상태 변화를 추적하기 어려워진다.
  • 추적의 어려움은 결국 오류를 야기하고, 오류해결을 어렵게 만든다.

위와 같은 이유로 비용이 증가하게 되므로, 함수형 프로그래밍에서는 순수함수의 사용을 지향한다.

cr. 참고자료


순수 함수는 오직 함수의 입력만이 함수의 결과에 영향을 주는 함수입니다.
사이드이펙트가 없는 함수로, 어떤 함수에 동일한 인자를 주었을 때 항상 같은 값을 리턴하는 함수이자, 외부의 상태를 변경하지 않는 함수입니다.

사이드 이펙트란, 외부 변수를 참조하거나, 변경하는 모든 종류의 코드를 의미합니다.

함수의 전달인자로 참조 자료형이 전달되는 경우, 의도치 않게 해당 객체 자체를 바꾸는 사이드 이펙트를 만들수도 있고, 이는 해당 데이터의 불변성을 손상시킵니다. 그래서 배열의 불변성을 보장하는 메서드인 map, filter, reduce등을 많이 씁니다.

profile
🌱

0개의 댓글