참조 투명성
Referential Transparency
From: 코틀린 함수형 프로그래밍
순수 함수에 대한 개념을 참조 투명성RT, Referential Transparency이라는 개념을 사용해 형식화할 수 있다. 참조 투명성은 식의 일반적인 특성으로 꼭 함수에만 국한되지 않는다. 어떤 식이 프로그램의 일부분이며, 결과로 평가될 수 있다고 하자. 코틀린 인터프리터에 타이핑해 넣어서 결괏값을 얻을 수 있는 모든 것은 식이다. 예를 들어
2 + 3
은 순수 함수plus
를2
와3
에 적용하는 식이다(2
와3
도 식이다). 이 식에는 아무 부수 효과가 없다. 이 식을 평가한 결과는 언제나5
라는 똑같은 값이다. 실제로 프로그램에서2 + 3
을 볼 때마다 이 식을5
로 치환할 수 있다. 그리고 그렇게 해도 프로그램의 의미가 전혀 바뀌지 않는다.이는 어떤 식이 참조 투명하다는 말이 지닌 뜻의 전부다. 어떤 프로그램에서 프로그램의 의미를 변경하지 않으면서 식을 그 결괏값으로 치환할 수 있다면, 이 식은 참조 투명한 식이다. 그리고 어떤 함수를 참조 투명한 인자를 사용해 호출한 결과가 참조 투명하다면 이 함수도 참조 투명하다.
– 코틀린 함수형 프로그래밍. 1장 44쪽.
참조 투명성은 함수가 수행하는 모든 일이 함수의 반환값에 의해 표현돼야 한다는 사실을 강제한다. 이런 제약을 도입하면 치환 모델substitution model을 통해 자연스럽고 단순하게 프로그램 평가에 대한 추론이 가능해진다. 식이 참조 투명하면 계산 과정이 대수 방정식을 풀 때와 마찬가지로 진행된다고 생각할 수 있다. 우리는 방정식의 각 부분을 완전히 전개시킨 후, 모든 변수를 그 변수가 가리키는 대상으로 치환하고, 다시 가장 단순한 형태로 묶는다(축약한다). 각 단계에서는 어떤 항을 그와 동등한 다른 항으로 대치한다. 계산은 어떤 식을 그와 동등한 값의 다른 식으로 치환하는 과정으로 이뤄진다. 다른 말로 참조 투명성은 프로그램에 대해 등치 관계를 사용한 추론을 가능하게 해준다.
– 코틀린 함수형 프로그래밍. 1장 46쪽.
참고문헌
- 코틀린 함수형 프로그래밍 / 마르코 버뮬런, 루나르 비아르드나손, 폴 치우사노 저/오현석, 서형국 역 / 에이콘출판사 / 2023년 07월 31일 / 원제: Functional Programming in Kotlin