То, что ВЫ хотите от создания памятки, может отличаться от того, что предоставляет опция памятки компилятора.
Возможно, вы знаете, что запоминать последние 10 или около того различных вычисленных значений выгодно только потому, что вы знаете, как будет использоваться функция.
Возможно, вы знаете, что имеет смысл запоминать только последние 2 или 3 значения, потому что вы никогда не будете использовать значения старше этого. (Последовательность Фибоначчи приходит на ум.)
Вы можете генерировать МНОЖЕСТВО значений в одних прогонах и только несколько в других.
Возможно, вы захотите «выбросить» некоторые запомненные значения и начать все сначала. (Я запомнил генератор случайных чисел таким образом, чтобы я мог воспроизвести последовательность случайных чисел, которые строили определенную структуру, в то время как некоторые другие параметры структуры были изменены.)
Запоминание как оптимизация зависит от того, что поиск записанного значения намного дешевле, чем пересчет значения. Это, в свою очередь, зависит от порядка ввода запросов. Это имеет значение для базы данных памятки: использует ли она стек, массив всех возможных входных значений (которые могут быть очень большими), хэш корзины или b-дерево?
Компилятор запоминания должен либо предоставить запоминание «один размер подходит всем», либо предоставить множество возможных альтернатив и параметров для управления альтернативами. В какой-то момент всем становится проще потребовать от пользователя предоставить свои собственные заметки.