순수 고차 함수
이 시점에서 적절한 질문은 ‘고차 함수가 순수할 수 있는가? 그리고 그것이 정확히 무엇을 의미할까?’이다.
정답은 ‘예’이며, 이 말은 고차 함수를 입력해서 순수 함수가 주어질 때 참조 투명성을 유지해야 한다는 뜻이다.
조에게 묻는다 문제가 발생할 때마다 이를 새로운 함수로 해결할 수 있을까?
그렇다. 거의 대부분의 경우 그렇다! 함수형 프로그래밍이라는 용어 자체가 이 사실을 잘 보여준다. 우리의 목표는 모든 것을 타입과 함수로 정의하는 것이므로, 어떤 문제에 대한 해법이 새로운 타입일 수 없는 경우에는 반드시 새로운 함수여야 한다.
반면 순수하지 않은 계산을 파라미터로 전달하면 순수 고차 함수를 실행한 결과도 순수하지 않아진다. 하지만 이 경우에도 고차 함수 자체는 여전히 순수함을 유지한다.
예를 들어 다음과 같이 두 숫자를 합산하고 그 결과를 기록하는 함수가 있다고 가정해보자.