假設有人把這種簡單的Python代碼哈斯克爾:避免「分享」的好方法?
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
與哈斯克爾版本的工作後,程序員是驚訝地發現,他的哈斯克爾版本「泄漏「記憶 - 在第一次調用他的功能後,luckyNumbers
永遠不會被釋放。這很麻煩,因爲該程序包含一些更類似的功能,並且所有這些功能消耗的內存都很重要。
是否有一種簡單而優雅的方式讓程序「忘記」luckyNumbers
?
不優雅,但是如果你添加'{ - #NOINLINE importantAstrologicalCalculation# - }',會發生什麼? –
最近有一個問題,明顯地詢問同樣的事情,但使用更先進的術語。你可能想看看它:http://stackoverflow.com/questions/6090932/how-to-make-a-caf-not-a-caf-in-haskell – Rotsor