Предположим, что кто-то перевел бы этот простой код Python на Haskell:
def important_astrological_calculation(digits):
# Get the first 1000000 digits of Pi!
lucky_numbers = calculate_first_digits_of_pi(1000000)
return digits in lucky_numbers
Версия на Haskell:
importantAstrologicalCalculation digits =
isInfixOf digits luckyNumbers
where
luckyNumbers = calculateFirstDigitsOfPi 1000000
После работы с версией на Haskell программист с удивлением обнаружил, чтоего версия на Haskell «пропускает» память - после первого вызова его функции luckyNumbers
никогда не освобождается.Это вызывает беспокойство, поскольку программа включает в себя еще несколько аналогичных функций, а память, используемая всеми из них, значительна.
Существует ли простой и элегантный способ заставить программу "забыть" luckyNumbers
?