मैं बंद करने के लिए वोट दिया है, लेकिन संक्षिप्त उत्तर:
GHC कार्यों के किसी भी स्वत: Memoization ऐसा नहीं करता है, और कहा कि शायद एक अच्छी बात है क्योंकि यह अंतरिक्ष जटिलता और भी कठिन बारे में तर्क करने बनाना होगा है। साथ ही, ज्ञापन सामान्य रूप से एक बहुत ही हल करने योग्य समस्या नहीं है, क्योंकि इसके लिए कार्य की तर्क समानता के लिए तुलनीय है जो सभी प्रकारों (उदाहरण के लिए, फ़ंक्शंस) के लिए वास्तव में संभव नहीं है।
हास्केल में गैर-सख्त अर्थशास्त्र है। जीएचसी एक, कम या ज्यादा, आवश्यकता लागत मॉडल द्वारा कॉल प्रदान करता है। हालांकि उच्च अनुकूलन स्तर पर आलसी मूल्यांकन के उपरिवहन कठोरता विश्लेषक की वजह से खराब नहीं है।
आलसी मूल्यांकन का उपयोग करके हास्केल में ज्ञापन को कार्यान्वित करना बहुत आसान है। हालांकि अंतरिक्ष उपयोग के बारे में सावधान रहें।
fib' :: (Integer -> Integer) -> Integer -> Integer
fib' f 0 = 0
fib' f 1 = 1
fib' f n | n > 1 = (f (n - 1)) + ((f (n - 2))
slow_fib :: Integer -> Integer
slow_fib = fib' slow_fib
fibs :: [Integer]
fibs = map (fib' memo_fib) [0..]
memo_fib :: Integer -> Integer
memo_fib n = fibs !! n
यह वास्तव में तेज़ नहीं है, और एक अंतरिक्ष रिसाव है, लेकिन सामान्य विचार को कैप्चर करता है। आप learn more on the Haskell wiki कर सकते हैं।
स्रोत
2012-09-12 14:52:32
@LoganCapaldo ओह, हाँ, मैं देखता हूं। लेकिन वह पोस्ट लगभग 2 साल पुरानी है, शायद कुछ प्रगति हुई थी। – Cartesius00
यदि आप अपने प्रश्न को ए में संपादित करते हैं) बी को स्वीकार करें और बी) स्पष्ट करें कि मूल के जवाब की तुलना में "प्रगति" का अर्थ क्या है और क्यों या क्यों "प्रगति" नहीं होती है, वहां कुछ मूल्यवान उत्तर हो सकते हैं। मैं इसमें शामिल होने के लिए तैयार नहीं हूं, लेकिन मुझे लगता है कि आप पाएंगे कि आप जिस प्रकार की कल्पना कर रहे हैं उसका स्वचालित ज्ञापन पहली ब्लश पर दिखाई दे सकता है की तुलना में कीड़े का एक बड़ा कर सकता है। –