इसलिए मैं एक प्रोग्राम लिख रहा हूं जो कुछ अंकगणितीय समस्या के लिए एक प्रक्रिया देता है, इसलिए मैं कुछ कार्यों को उदाहरण के लिए उदाहरण देना चाहता था ताकि मैं उसी अभिव्यक्ति को मुद्रित कर सकूं जब मैं मूल्यांकन करता हूं परीक्षा। समस्या यह है कि दिया गया कोड पहली पंक्ति में (-) से मेल खाता है जब इसे दूसरे में गिरना चाहिए।कार्यों को बढ़ावा देने के साथ अजीब पैटर्न मिलान
{-# OPTIONS_GHC -XFlexibleInstances #-}
instance Show (t -> t-> t) where
show (+) = "plus"
show (-) = "minus"
main = print [(+),(-)]
रिटर्न
[plus,plus]
मैं सिर्फ पहली जगह में एक नश्वर पाप मुद्रण कार्यों को करने कर रहा हूँ या वहाँ किसी तरह मैं इसे ठीक से पूरे करने से मिल सकती है?
संपादित करें: मुझे लगता है मैं निम्न चेतावनी हो रही है:
Warning: Pattern match(es) are overlapped
In the definition of `show': show - = ...
मैं अभी भी नहीं जानता कि क्यों यह ओवरलैप करता है, या यह कैसे को रोकने के लिए।
यह शानदार है, धन्यवाद। (और नीचे दिए गए समाधान से कहीं अधिक सुरुचिपूर्ण।) –
@ सेन डी: यह भी एक अच्छा उदाहरण बनाता है कि आपका मेगा हैक असफल होगा - विचार करें कि क्या होगा यदि इसका उपयोग 'अभिव्यक्ति इंटीगर' मानों पर ऑपरेटर के साथ किया गया था । 'कोड '2 के बराबर उचित उदाहरण होने के बावजूद' 6 6' 'लिटरल 8' के बराबर नहीं है। –