मैं ऐसी स्थिति में आया हूं जहां मैं ऑपरेटरों पर पैटर्न मिलान करना चाहता हूं। हालांकि, यह जीएचसी के साथ Pattern match(es) are overlapped
त्रुटि फेंकता है। मैं समझ नहीं सकता क्यों। ऑपरेटरों पर पैटर्न मिलान की अनुमति नहीं है? मुझे लगता है कि converts it into an identifier कोष्ठक में ऑपरेटर प्रतीक संलग्न करने के बाद, यह काम करना चाहिए था।पैटर्न मिलान (एस) ओवरलैप हैं - ऑपरेटरों पर पैटर्न मिलान
test :: (Integer -> Integer -> Integer) -> String
test (+) = "plus"
test (-) = "minus"
test _ = "other"
मैं अन्य तरीकों से पूरा कर सकता हूं जो मैं करना चाहता हूं। मैं सिर्फ उत्सुक हूं कि यह क्यों काम नहीं करता है।
आपकी पहली पंक्ति किसी भी फ़ंक्शन से मेल खाती है और स्थानीय रूप से इसे इंफिक्स ऑपरेटर + से जोड़ती है। बाद की रेखाएं इस प्रकार आवश्यकताओं के लिए अधिशेष हैं, इसलिए चेतावनी। ध्यान दें कि फ़ंक्शन प्रतीक, इन्फिक्स या नहीं, सभी इस तरह से मेल खाने वाले पैटर्न द्वारा स्थानीय रूप से रीबाउंड हो सकते हैं। केवल पूंजीकृत कन्स्ट्रक्टर (या: -prefixed इंफिक्स कन्स्ट्रक्टर) और अक्षर केवल खुद से मेल खाते हैं, और फिर केवल प्रथम क्रम प्रकार में। हास्केल (लगभग) कार्यों के आकस्मिक गुणों का निरीक्षण करने का कोई तरीका नहीं देता है: (अलग-अलग) आप उन्हें लागू करके केवल अपने विस्तारित गुणों का फायदा उठा सकते हैं। "क्या यह + समारोह है?" अनुमति नहीं है – pigworker
@ पिगवर्कर, यह बताता है कि मुझे 'इस बाध्यकारी ओवरहाडो मौजूदा प्रीड्यूड परिभाषा' संदेश क्यों मिल रहा था। जानकारी के लिए धन्यवाद। –