विकिपीडिया पृष्ठ पर summation पर यह कहता है कि हैस्केल में समकक्ष ऑपरेशन फ़ोल्ड का उपयोग करना है। मेरा सवाल है: क्या योग के बजाय इसका उपयोग करने का कोई कारण है? क्या दूसरे की तुलना में एक और 'शुद्ध' है, या कोई वास्तविक अंतर नहीं है?हास्केल में सम्मेलन नोटेशन
उत्तर
foldl
एक सामान्य tail-recursive फ़ंक्शन को कम करता है। रिकर्सन एक कार्यात्मक प्रोग्रामिंग भाषाओं में वस्तुओं की सूचियों में हेरफेर करने के बारे में सोचने का सामान्य तरीका है, और लूप पुनरावृत्ति के लिए एक विकल्प प्रदान करता है जो अक्सर अधिक सुरुचिपूर्ण होता है। fold
जैसे कम कार्यों के मामले में, पूंछ-पुनरावर्ती कार्यान्वयन is very efficient। जैसा कि अन्य ने समझाया है, sum
तो foldl (+) 0 l
के लिए बस एक सुविधाजनक निमोनिक है।
संभावित रूप से विकिपीडिया पृष्ठ पर इसका उपयोग पूंछ-रिकर्सन के माध्यम से सारांश के सामान्य सिद्धांत को चित्रित करना है। लेकिन चूंकि हास्केल Prelude लाइब्रेरी में sum
है, जो समझने के लिए छोटा और अधिक स्पष्ट है, तो आपको इसे अपने कोड में उपयोग करना चाहिए।
हास्केल के fold
कार्यों का एक nice discussion सरल उदाहरणों के साथ काम करता है जो पढ़ने योग्य है।
मुझे नहीं लगता कि यह उस विकिपीडिया पृष्ठ पर हास्केल या foldl
के बारे में कुछ कहां कहता है, लेकिन sum
हास्केल में foldl
का एक और विशिष्ट मामला है। यह इस तरह से लागू किया जा सकता है, उदाहरण के लिए:
sum l = foldl (+) 0 l
कौन सा कम किया जा सकता:
sum = foldl (+) 0
वहाँ कोई अंतर नहीं है। वह पृष्ठ बस यह कह रहा है कि sum
foldl
का उपयोग करके कार्यान्वित किया गया है। जब भी आपको संख्याओं की सूची की गणना करने की आवश्यकता होती है तो बस sum
का उपयोग करें।
जैसा कि दूसरों ने कहा है, इसमें कोई अंतर नहीं है। हालांकि, एक फोल्ड-कॉल की तुलना में एक योग-कॉल पढ़ने के लिए आसान है, इसलिए यदि आपको सारांश की आवश्यकता है तो मैं योग के लिए जाऊंगा।
ध्यान देने योग्य एक बात यह है कि योग आपके इच्छित से अधिक आलसी हो सकता है, इसलिए फ़ोल्ड का उपयोग करने पर विचार करें।
सारांश की अवधारणा को गैर-संख्यात्मक प्रकारों तक बढ़ाया जा सकता है: आपको केवल एक (+) ऑपरेशन और शून्य मान के बराबर कुछ चाहिए। दूसरे शब्दों में, आपको monoid की आवश्यकता है। इससे हास्केल फ़ंक्शन "mconcat" होता है, जो एक मोनॉयड प्रकार के मानों की एक सूची का योग देता है। पाठ्यक्रम का डिफ़ॉल्ट "mconcat" "mappend" के संदर्भ में परिभाषित किया गया है जो प्लस ऑपरेशन है।
- 1. हास्केल मॉड्यूल नामकरण सम्मेलन
- 2. स्कैला में स्लाइस नोटेशन?
- 3. पाइथन वैरिएबल नामकरण सम्मेलन
- 4. हास्केल
- 5. हास्केल
- 6. hackage.haskell.org प्रलेखन सम्मेलन
- 7. इंफिक्स से उपसर्ग नोटेशन
- 8. सम्मेलन?
- 9. संभाव्यता नोटेशन
- 10. उपसर्ग नोटेशन
- 11. ओ नोटेशन
- 12. PHP में घुंघराले ब्रेसिज़ नोटेशन
- 13. php में "::" नोटेशन क्या है?
- 14. डॉट नोटेशन
- 15. स्कैला में हास्केल डू-नोटेशन या एफ # गणना अभिव्यक्तियों के समतुल्य?
- 16. इस नामकरण सम्मेलन क्या है?
- 17. कैसे हास्केल चर भौतिकी में हास्केल में
- 18. सजावटी में पाइथन नामकरण सम्मेलन
- 19. लॉगिंग सम्मेलन
- 20. आरपीएन (रिवर्स पोलिश नोटेशन) या पोस्टफिक्स नोटेशन नियमित अभिव्यक्ति
- 21. सम्मेलन टिप्पणी
- 22. नामकरण सम्मेलन?
- 23. Node.js सम्मेलन?
- 24. स्टैंडर्ड सम्मेलन
- 25. गणितीय नोटेशन कैसे सीखें?
- 26. matlab वैज्ञानिक नोटेशन समस्या
- 27. जावास्क्रिप्ट डॉट नोटेशन
- 28. इंटेल ओपोड नोटेशन
- 29. jQuery ऑब्जेक्ट सरणी नोटेशन
- 30. शाब्दिक नोटेशन वीएस। जावास्क्रिप्ट
आह, अब मैं इसे देखता हूं। मैंने 'फ़ोल्ड' की खोज की है लेकिन विकिपीडिया पेज 'फोल्ड' का उपयोग करता है। –