그림 1-3은 참조 투명한 프로그램과 참조 투명하지 않은 프로그램의 차이를 보여준다.
![](https://thebook.io/img/080208/039_1.jpg)
참조 투명한 프로그램은 인자로 값을 받아서 결괏값을 내놓는 행위를 제외하고는 외부 세계와 상호 작용하지 않는다. 참조 투명한 프로그램의 결괏값은 인자 값에만 의존한다.
![](https://thebook.io/img/080208/039_2.jpg)
참조 투명하지 않은 프로그램은 외부 세계의 요소로부터 데이터를 읽고 쓰거나 파일에 로그를 남기거나 외부 객체의 상태를 바꾸거나 키보드 입력을 받거나 화면에 출력하는 등의 작용을 한다. 그 결과는 예측 불가능하다.
▲ 그림 1-3 참조 투명한 프로그램과 참조 투명하지 않는 프로그램의 차이점