GHC не выполняет автоматическое запоминание .См. GHC FAQ по Общее устранение субэкспрессии (не совсем то же самое, но я предполагаю, что рассуждения те же) и ответ на этот вопрос .
Если вы хотите сделать памятку самостоятельно, взгляните на Data.MemoCombinators .
Еще один способ взглянуть на памятку - это использовать лень, чтобы воспользоваться памяткой.Например, вы можете определить список в терминах самого себя.Приведенное ниже определение представляет собой бесконечный список всех чисел Фибоначчи (взятых из Haskell Wiki )
fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
Поскольку список реализован лениво, это похоже на предварительное вычисление (запоминание) предыдущих значений,Например, fibs !! 10
создаст первые десять элементов, так что fibs 11
будет намного быстрее.