Предположим, что кто-то переведет этот простой код 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
Хаскель версия:
importantAstrologicalCalculation digits =
isInfixOf digits luckyNumbers
where
luckyNumbers = calculateFirstDigitsOfPi 1000000
После работы с версией для Haskell программист с удивлением обнаруживает, что его версия для Haskell «пропускает» память — после первого вызова его функции luckyNumbers
никогда не освобождается. Это беспокоит, так как программа включает в себя еще несколько подобных функций, и память, потребляемая всеми ими, значительна.
Есть ли простой и элегантный способ заставить программу «забыть» luckyNumbers
?
{-# NOINLINE importantAstrologicalCalculation #-}
? - person John L   schedule 07.07.2011