Q : R과 Python을 공부하고 있는데 순수함수라는 용어가 나오던데 설명 부탁드립니다.

A : 순수함수에서는 주어진 입력으로 계산 하는 것 이외 프로그램의 실행에 영향을 미치지 않아야 합니다. 즉 외부의 상태를 변경하는 것 혹은 함수로 들어온 인자의 상태를 직접 변경하는 것 같은 Side Effect(부수효과)가 없어야 합니다. 이러한 조건을 충족시키는 함수를 순수 함수라고 합니다.
순수 함수는 참조 투명성을 보장합니다. 즉 입력값이 동일하다면 언제나 결과도 항상 동일합니다. 스레드가 처리하는 데이터가 변하지 않고 함수가 순수함수라면 스레드가 늘어나더라도 문제가 되지 않겠죠? 언제나 동일한 입력값이 들어간다면 출력값은 항상 같을테니까요. 이런 이유로 순수 함수를 바탕으로 하는 함수형 프로그래밍은 멀티태스킹에 뛰어납니다. 그럼 순수함수의 예를 들어보겠습니다.

add라는 함수는 어떠한 경우라도 10, 15를 입력하면 항상 25가 출력될 것입니다. 지금 이 글을 읽는 순간이나 내일, 혹은 매우 먼 미래에 실행하더라도 결과는 같습니다. 위의 경우가 순수함수입니다. 그럼 순수하지 않은 함수를 살펴볼까요?

이 함수는 실행할 때마다 항상 같이 다르게 출력될 것입니다. 그 이유는 c의 값이 매번 변화하고 그 값이 함수 안에서 다른 입력값에 영향을 미치기 때문입니다. 이런 함수는 순수한 함수라고 하지 않습니다.