का उपयोग करता है Γ
बिल्ट-इन का मुख्य उपयोग Γ, जिसे सूचियों या सूची डिकंस्ट्रक्शन पर मिलान करने वाले पैटर्न के रूप में जाना जाता है , एक सूची को सिर और पूंछ में विभाजित करना और उन पर एक बाइनरी फ़ंक्शन लागू करना है। यह हास्केल पैटर्न के मेल खाने वाले मुहावरे से मेल खाती है
f (x : xs) = <something>
f [] = <something else>
जहाँ <something>एक अभिव्यक्ति है x, xsऔर संभवतः f। 4 ओवरलोडिंग हैं Γ, जिनमें से प्रत्येक थोड़ा अलग तरीके से काम करता है।
list
पहला ओवरलोडिंग, listएक मान aऔर एक बाइनरी फ़ंक्शन लेता है f। यह एक नया फ़ंक्शन देता है जो सूची लेता है, aयदि यह खाली है, तो वापस आ जाता है fऔर अगर यह गैर- खाली है तो सिर और पूंछ पर कॉल करता है। उदाहरण के लिए, Γ_1€एक सूची लेता है, -1अगर यह खाली है, और यदि नहीं तो पूंछ में पहले तत्व की पहली घटना का सूचकांक।
listN
दूसरा ओवरलोडिंग, के listNसमान है list, सिवाय इसके कि aछोड़ दिया गया है और बदले प्रकार के डिफ़ॉल्ट मान का उपयोग किया जाता है। उदाहरण के लिए, Γ€के बराबर है Γ0€, क्योंकि डिफ़ॉल्ट संख्यात्मक मान है 0।
व्यवहार में, listNअधिक से अधिक बार उपयोग किया जाता है list, क्योंकि डिफ़ॉल्ट मान या तो अप्रासंगिक है या वास्तव में आपको क्या चाहिए। एक सामान्य पैटर्न है Γ~αβγ, जहां αβγतीन कार्य हैं; यह βपहले तत्व और γपूंछ पर लागू होता है , और परिणामों को जोड़ती है α। इस उत्तर में इसका उपयोग किया गया था । अन्य पैटर्न शामिल Γo:αलागू करने के लिए αकेवल पहला तत्व है, और Γ·:mαलागू करने के लिए αपहले को छोड़कर सभी तत्वों के लिए। इस उत्तर में उत्तरार्द्ध का उपयोग किया गया था ।
listF
तीसरा ओवरलोडिंग थोड़ा अधिक शामिल है। जैसे list, यह एक मान aऔर एक फ़ंक्शन लेता है f, और एक नया फ़ंक्शन देता है gजो एक सूची लेता है। हालांकि, यह समय fएक अतिरिक्त फ़ंक्शन तर्क लेता है, जो gस्वयं है, और इसे किसी भी मूल्य पर कॉल कर सकते हैं (सहित, लेकिन इनपुट सूची की पूंछ तक सीमित नहीं है)। इसका मतलब यह है कि सूचियों पर listFएक सामान्य पुनरावृत्ति योजना को लागू करता है।
listFबहुत बार उपयोग नहीं किया जाता है, क्योंकि स्पष्ट उत्तर के साथ list/ listNआमतौर पर एक ही लंबाई या छोटी होती है, जैसा कि इस उत्तर में है ।
listNF
listNFइसके लिए listFक्या listNहै list: इनपुट aछोड़ा गया है, और बदले प्रकार के डिफ़ॉल्ट मान का उपयोग किया जाता है। दुर्लभ परिस्थितियों में, यह एक सही तह से कम हो सकता है, उदाहरण के लिए इस उत्तर में ।
के पुनरावर्ती संस्करणों के एक उदाहरण के रूप में Γ, फ़ंक्शन Γλ·:o⁰↔पहले, अंतिम, दूसरे, दूसरे से दूसरे, तीसरे, तीसरे-से-अंतिम, और इसी तरह के क्रम में एक सूची में फेरबदल करता है।
इसे ऑनलाइन आज़माएं!
फ़ंक्शन fस्पष्ट लंबोदर है λ·:o⁰↔, जिसका तर्क ⁰संपूर्ण फ़ंक्शन है। क्या fकरता है के साथ पूंछ को उल्टा है ↔, तो मुख्य समारोह के साथ पुनरावर्ती कॉल o⁰, और अंत में सिर के साथ वापस सौदा ·:। बेशक, Γ·:o₀↔एक बाइट कम है, लेकिन काम नहीं करता है अगर लाइन में इस फ़ंक्शन के अलावा कुछ और होता है।