# 메모이제이션 메모이제이션이란 단어는 영국의 인공지능 연구학자인 도널드 미치^Donald Michie^가 `연속해서 사용되는 연산 값을 함수 레벨에서 캐시하는 것`을 지칭하는 것으로 처음 사용하였다. 오늘날 메모이제이션은 함수형 프로그래밍 언어에서 흔히 내장된 기능이거나 쉽게 구현할 수 있는 기능이다. 순수함수란 부수효과가 없는 함수를 말한다. 불변 클래스 필드를 참고하지도 않고, 리턴 값 외에는 아무 값도 쓰지 않아야 하며, 주어진 매개변수에만 의존해야 한다. java.lang.Math의 모든 메서드가 순수함수의 좋은 예이다. 물론, 주어진 매개변수에 대해 항상 같은 값을 리턴하는 함수에 한해서만 캐시된 값을 재사용할 수 있다. ### 그루비의 메모이제이션 메서드들 - memoise() : 캐싱 형태의 클로저를 만든다. - memoizeAtMost() : 최대 크기를 가지는 캐싱 형태의 클로저를 만든다. - memoizeAtLeast() : 최소 크기를 가지고 크기를 자동 조정하는 캐싱 형태의 클로저를 만든다. - memoizeBetween() : 캐시 크기를 최대치와 최소치 사이에서 자동 조정하는 캐싱 형태의 클로저를 만든다.