मान लीजिए कि किसी हास्केल को यह साधारण अजगर कोड अनुवाद होगा:"साझाकरण" से बचने का एक अच्छा तरीका है?
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 महत्वपूर्ण ज्योतिषीय गणना # -}' –
जोड़ते हैं, हाल ही में एक सवाल था, जाहिर है कि वही बात पूछ रही है, लेकिन अधिक उन्नत शब्दावली का उपयोग कर। आप इसे देखना चाहते हैं: http://stackoverflow.com/questions/6090932/how-to-make-a-caf-not-a-caf-in-haskell – Rotsor