आप जानें हास्केल को foldl
क्योंकि foldl
अतिप्रवाह ढेर की संभावना है एक विकल्प के रूप foldl'
के बारे में बात करती है।सिलवटों और ढेर के बारे में प्रश्न overflows
- एलवाईएएच के अनुसार,
foldl (+) 0 (replicate 1000000 1)
को ओवरफ्लो ढेर करना चाहिए, लेकिन यह मेरी मशीन पर नहीं है। क्यों नहीं? भले ही मैं उस संख्या को 10 मिलियन तक बढ़ा दूं, यह अतिप्रवाह नहीं है। यह तब तक बहुत मेमोरी लेता है जब तक कि मेरा ओएस एक्स कंप्यूटर अनुपयोगी न हो और मुझे इसे रीबूट करना होगा। foldl'
के बजाय मुझे किस मामले मेंfoldl
का उपयोग करना चाहिए? मेरे अनुभव मेंfoldl'
"बस काम करता है" जबकिfoldl
अनिवार्य रूप से मेरे कंप्यूटर को क्रैश कर सकता है (ऊपर देखें)।- मुझे समझ में नहीं आता कि
foldr
के लिए कुछ भी क्यों नहीं है।foldr
स्टैक ओवरफ़्लो क्यों नहीं हो सकता है औरfoldr'
क्यों नहीं है?
[असीमित सूची में बाएं और दाएं फोल्डिंग के संभावित डुप्लिकेट] (http://stackoverflow.com/questions/7396978/left-and-right-folding-over-an-infinite-list) –
आपके दूसरे के उत्तर और तीसरे प्रश्न https://www.haskell.org/haskellwiki/Foldr_Foldl_Foldl ' – Jubobs
पर सटीक बिंदु पर आपका सटीक बिंदु जिस पर आपका कंप्यूटर स्टैक ओवरफ्लो मारा जाएगा या स्मृति से बाहर चला जाएगा, आपके ऑपरेटिंग सिस्टम पर निर्भर है, आप कौन से अन्य प्रोग्राम हैं चल रहा है, और आपका भौतिक हार्डवेयर। एक रास्पबेरी पाई ग्राफिक्स रेंडरिंग कंप्यूटर (जिसमें> 100 जीबी रैम हो सकता है) की तुलना में रैम से बाहर हो जाएगा, उदाहरण के लिए। आपका ओएस अधिक मेमोरी का अनुरोध करने वाले प्रोग्रामों को प्रबंधित करने के लिए किसी विशेष तरीके से स्वैप का उपयोग भी कर सकता है। – bheklilr