प्रश्नों की अन्य सामान्य गलतियों की भावना में, हास्केल प्रोग्रामर क्या सबसे आम गलतियां करते हैं? मैं थोड़ी देर के लिए खुद को हास्केल पढ़ रहा हूं और मुझे असली दुनिया में इसे लागू करने के लिए भाषा के साथ काफी सहज महसूस करना शुरू हो रहा है।हास्केल डेवलपर्स के लिए सामान्य प्रोग्रामिंग गलतियों से बचने के लिए?
उत्तर
मुझे पता है कि सबसे आम गलती आलसी मूल्यांकन के माध्यम से अंतरिक्ष रिसाव पेश कर रही है। इस गलती को प्राप्त करने के कई तरीके हैं, लेकिन एक विशेष रूप से नाखून प्रोग्रामर अन्य कार्यात्मक-प्रोग्रामिंग अनुभव के साथ परिणामस्वरूप एक संचय पैरामीटर में परिणाम डालते हैं, यह सोचते हुए कि संचय पैरामीटर निरंतर स्थान लेगा। कई मामलों में संचय पैरामीटर रैखिक स्थान लेता है क्योंकि पैरामीटर का मूल्यांकन नहीं किया जाता है।
एक और आम गलती भूल जाती है कि let
हमेशा रिकर्सिव है। को अनैच्छिक
let x = ... x ...
परिणामों चौंकाने वाला हो सकता है।
अधिकांश अन्य सामान्य बुरे अनुभव गलतियों के रूप में प्रकट नहीं होते हैं, लेकिन प्रकार के चेकर्स के पीछे प्रोग्राम प्राप्त करने में परेशानी होती है, या मोनैडिक I/O मॉडल को समझने में कठिनाई होती है। सूची समझ के साथ कठिनाइयों और do
नोटेशन कभी-कभी होते हैं।
सामान्य में कठिनाइयों हास्केल प्रोग्रामर शुरुआत के सामने आने वाली
- कई अंधेरे कोनों के साथ बड़े भाषा, विशेष रूप से प्रकार प्रणाली
- परेशानी हो रही कार्यक्रमों को संकलित करने में, जब वे मुझे क्या करना विशेष रूप से/ओ शामिल
- महान आलसी कार्यात्मक कार्यक्रमों
IO
इकाई में सब कुछ कर रहा
के लिए एक आम गलती हास्केल प्रोग्रामर forget the difference between constructor and type namespaces है। यह इतनी शुरुआती गलती थी कि मैं इसके नाम से जुड़ा हुआ शर्मिंदा हूं, लेकिन मुझे पूरा भरोसा है कि दूसरों को एक ही समस्या होने पर उस जवाब पर ठोकर खाई जाएगी, इसलिए इसे वहां भी रख सकते हैं।
[]
और [[]]
के बीच का अंतर: खाली सूची और 1 तत्व के साथ सूची, अर्थात् खाली सूची। यह विशेष रूप से रिकर्सिव कार्यों के मूल मामलों में पॉप अप करता है।
गैर पूंछ-रिकर्सिव फ़ंक्शंस का उपयोग करें या स्टैक ओवरफ़्लो के लिए होने वाली सख्त फ़ोल्डर्स का उपयोग न करें।
यह अन्य कार्यात्मक भाषाओं की तुलना में हास्केल में कम सत्य है। बहुत समय, आलस्य कार्य के गैर-पूंछ संस्करणों को बेहतर विकल्प बनाता है (उदाहरण के लिए आप एक अनंत सूची 'फ़ोल्डर' कर सकते हैं, जबकि पूंछ-रिकर्सिव 'फ़ोल्डल' हर बार विस्फोट कर देगा)। – Chuck
मुझे पता है, लेकिन सिर (x: xs) = head xs + 1 1000000 वस्तुओं की सूची में विस्फोट नहीं करेगा? – Hai
मैंने सफलता के बिना 'हेड' (x: xs) = x '= head' 'xs x' \ 'seq \' x '+ 1' में कोशिश की थी। किसी के पास कोई सुराग है? – ScootyPuff
अभिव्यक्ति की धारणा शुरुआती लोगों के लिए काफी भ्रमित है। अनिवार्य प्रोग्रामिंग भाषाओं में सशर्त निर्माण ले लो। वहां सिर्फ एक निर्माण है लेकिन हास्केल में इसकी एक अभिव्यक्ति है। तो यदि एक सशर्त के पास मेल खाने वाला होना चाहिए और दोनों को उसी प्रकार के मूल्यांकन के मूल्य मिलना चाहिए।
wrongFunc n = if n > 18
then 1
else False
यदि ब्लॉक एक पूर्णांक के लिए evalutes जहां अन्य एक बूल देता है। यह एक सामान्य त्रुटि है जैसे हास्केल में वे केवल बयानों के ब्लॉक नहीं हैं बल्कि अभिव्यक्तियां हैं।
मुझे नहीं लगता कि यह भ्रमित क्यों है, और मैं एक हास्केल नौसिखिया हूं। सी-जैसी भाषा में एक ही चीज़ की तुलना करें: आपके पास स्पष्ट रिटर्न होगा, लेकिन वापसी प्रकार को या तो int या bool होना चाहिए और तर्क के मान के आधार पर 1 या झूठी वापसी करने में त्रुटि होगी। – Zak
- 1. सी # डेवलपर्स के लिए प्रोग्रामिंग प्रश्न पुस्तिका -
- 2. डेवलपर्स के लिए टाइपोग्राफी
- 3. डेवलपर्स के लिए वीडियो
- 4. हास्केल में सामान्य प्रोग्रामिंग कैसे करते हैं?
- 5. डेवलपर्स के लिए डेवलपर्स का अच्छा अनुपात क्या है?
- 6. सी ++ डेवलपर्स के लिए पायथन
- 7. आपकी सामान्य Magento कॉन्फ़िगरेशन गलतियों क्या हैं?
- 8. कार्यालय वीबीए डेवलपर्स के लिए प्रलेखन संसाधन
- 9. ईमेल स्पैम से बचने के लिए सबडोमेन के लिए एसपीएफ़
- 10. सामान्य उद्देश्य प्रोग्रामिंग, एफ # या हास्केल के लिए कौन सी भाषा बेहतर है?
- 11. मैपिंग: कुंजी से बचने के लिए nohlsearch
- 12. सीआरटीपी गतिशील बहुरूपता से बचने के लिए
- 13. वेग में # से बचने के लिए कैसे
- 14. फोर्स रेजर यूआरएल से बचने के लिए
- 15. Xml से बचने के लिए/एन्कोडिंग शब्दावली
- 16. हाइबरनेट से बचने के लिए रणनीतियां LazyInitializationExceptions
- 17. कैसे से बचने के लिए अपरिभाषित ऑफसेट
- 18. से बचने के लिए और एक यूआरएल
- 19. विधवाओं से बचने के लिए जावास्क्रिप्ट
- 20. प्रोग्रामिंग के लिए आरपी प्रोग्रामिंग
- 21. क्या सामान्य हास्केल ऑपरेटरों के लिए उल्लेखनीय नाम हैं?
- 22. जावा डेवलपर्स के लिए लॉग फ़ाइल विश्लेषक
- 23. क्लोजर के लिए हास्केल
- 24. ग्राफ डेवलपर्स सॉफ्टवेयर डेवलपर्स के लिए उपयोगी है?
- 25. प्रोग्रामिंग के लिए संशोधित कोलमैक
- 26. डेवलपर्स के लिए आईफोन ग्राफिक डिज़ाइन सलाह
- 27. आईफोन डेवलपर्स के लिए सर्वश्रेष्ठ जियोकोडिंग सेवा
- 28. वेब 2py डेवलपर्स के लिए Django
- 29. वरिष्ठ डेवलपर्स के लिए संचार पैटर्न
- 30. एएसपीनेट डेवलपर्स के लिए अपनी मौजूदा वेबसाइट
और दूसरा होना चाहिए-समुदाय-विकी ... – chaos
प्रश्न की यह शैली आमतौर पर एक समुदाय विकी के रूप में बेहतर सराहना की जाती है। – zombat
यह कल्पना करना मुश्किल है कि यह "वास्तविक प्रश्न नहीं" क्यों है जब एसओ पर इतने सारे "सामान्य प्रोग्रामिंग गलतियों" प्रश्न हैं जो बच गए हैं। –