haskell - Is using mapM/sequence considered good practice? -
निम्नलिखित उदाहरण पर विचार करें:
safeMapM f xs = safeMapM 'xs [] जहां safeMapM' [] Acc = वापसी $ रिवर्स एसीसी सुरक्षितमैप '(एक्स: एक्सएस) एसीसी = यू व एलटी; - एफएक्स सुरक्षितमैप एम' एक्सएस (वाई: एसी) मैप एम रिटर्न बहुचर्चित - बड़ी सूचियों पर स्थान अतिप्रवाह स्टैक का कारण है सुरक्षितमैप रिटर्न मोस्टेलिस्ट - लगता है बड़ी सुर्खियों पर mapM का उपयोग कर एक स्टैक स्पेस अतिप्रवाह होता है जबकि सुरक्षितमैप ठीक काम करता है (जीएचसी 7.6.1 का उपयोग करते हुए) -O2 )। हालांकि मुझे हास्केल मानक पुस्तकालयों में safeMapM के समान एक फ़ंक्शन नहीं मिल पा रहा था। क्या यह अभी भी mapM (या क्या उस बात के लिए अनुक्रम )? अगर ऐसा है, तो स्टैक स्पेस ओवरफ्लो के खतरे के बावजूद यह अच्छा अभ्यास क्यों माना जाता है?
यदि आप वैकल्पिक रूप से उपयोग करने का सुझाव नहीं देते हैं?
निकलस बी के रूप में, mapM की शब्दावली एक प्रभावशाली दायां गुना , और यह एक फ़्लिप संस्करण की तुलना में अधिक मामलों में सफलतापूर्वक समाप्त हो जाता है। सामान्य में, mapM अधिक समझ में आता है, क्योंकि यह दुर्लभ है कि हम डेटा की एक विशाल सूची पर नतीजा देने वाला नक्शा चाहते हैं। अधिक सामान्यतः, हम प्रभाव के लिए ऐसी सूची का मूल्यांकन करना चाहेंगे, और उस स्थिति में mapM _ और अनुक्रम _ , जो परिणामों को फेंक देते हैं, आम तौर पर क्या सिफारिश की जाती है। संपादित करें: दूसरे शब्दों में, प्रश्न में उठाए गए मुद्दे के बावजूद, हाँ , mapM और अनुक्रम < / कोड> सामान्यतः उपयोग किया जाता है और आमतौर पर अच्छा अभ्यास माना जाता है।
Comments
Post a Comment