Предположим, что кто-то переведет этот простой код 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
?