지연평가는 함수형 프로그래밍에서 자주 등장하는 개념이며 어떤 표현식의 값을 필요로 할 때까지 평가를 미루는 방법이다. 함수형 언어에서는 기본으로 모든 계산이 지연평가로 동작하기에 따로 구현할 필요는 없지만 그렇지 않은 언어에서는 각자의 언어 기능을 활용해 구현한다.
코틀린에서는 표준 위임 클래스 중 하나인 Lazy
를 통해 지연평가를 사용할 수 있다.
하지만 이는 완벽한 지연평가라기 보다 프로퍼티의 지연 초기화에 가깝다.
이번 글에서는 메모이제이션 기능이 있는 커스텀 Lazy
클래스를 만드는 과정을 기술하려고 한다.