मानक हास्केल के विस्तार के रूप में, आप "प्रकार" से निपट सकते हैं। प्रकार प्रकार और प्रकार के रचनाकारों के लिए एक बहुत ही बुनियादी प्रकार की प्रणाली के प्रकार हैं। दया *
एक साधारण प्रकार है, जैसे Int
। दया * -> *
एक प्रकार का कन्स्ट्रक्टर है जो एक प्रकार लेता है और Maybe
जैसे प्रकार का उत्पादन करता है: इसे Int
जैसे एक तर्क के रूप में पास करें, और आपको Maybe Int
टाइप करें।
इस कोड में उपयोग किया गया दूसरा एक्सटेंशन (जिसे मैंने पहले नोटिस नहीं किया था, इंडेंटेशन खो गया था) संबंधित प्रकार है। मानक हास्केल में एक टाइपक्लास कई कार्यों को निर्दिष्ट कर सकता है जिन्हें प्रकार का समर्थन करना चाहिए। संबंधित प्रकारों के साथ, यह प्रकार के साथ जुड़े प्रकारों और प्रकार के रचनाकारों को अतिरिक्त रूप से निर्दिष्ट कर सकता है।
यहाँ, इसका मतलब है कि एक प्रकार i
Imageable
का एक उदाहरण है (यानी एक छवि की तरह बर्ताव करता है) कि एक संबद्ध पिक्सेल प्रकार Pixel i
होनी आवश्यक है और यह एक सरल प्रकार (तरह *
), नहीं एक प्रकार निर्माता होना चाहिए।
स्रोत
2014-04-02 10:03:47
क्या आप जानते हैं कि कोड लेखक इस डिज़ाइन का उपयोग क्यों करते हैं? – osager
कोई विकल्प नहीं है। आपके पास किसी प्रकार का प्रकार है जो किसी छवि का प्रतिनिधित्व करता है, और टाइपक्लास को उन फ़ंक्शंस की आवश्यकता होती है जो छवि में एक पिक्सेल से निपटती हैं। यह पता लगाने के लिए आपको कुछ तरीका चाहिए कि उस पिक्सेल का प्रकार क्या है। आप इसे ठीक कर सकते हैं, लेकिन यह बहुत लचीला नहीं है। आप छवि और उसके पिक्सेल पर एक बहु-चरम टाइपक्लास बना सकते हैं, लेकिन फिर आपको कार्यात्मक निर्भरताओं की आवश्यकता होती है या अस्पष्टताएं टाइप करेंगी जो आपको पागल बनाती हैं, और आपको कक्षा के उपयोग करने वाले प्रत्येक हस्ताक्षर में पिक्सेल प्रकार का उल्लेख करने की आवश्यकता है। एसोसिएटेड प्रकार बहुत साफ और आसान हैं। –