Да предположим, че някой би превел този прост код на 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
?
{-# NOINLINE importantAstrologicalCalculation #-}
? - person John L   schedule 07.07.2011