हास्केल में, "प्रकार" में केवल संभावित मानों का एक विशिष्ट सेट हो सकता है जो किसी अन्य प्रकार से ओवरलैप नहीं होता है। ऐसी कोई चीज नहीं है जैसे कि एक प्रकार का "एक अलग प्रकार" या "किसी अन्य प्रकार का उप-प्रकार" हो।
जब हम पॉलिमॉर्फिज्म चाहते हैं, यानी, से अधिक प्रकार के फ़ंक्शन पर लागू हो सकते हैं, तो हम निर्दिष्ट कर सकते हैं कि फ़ंक्शन के हस्ताक्षर प्रकार में एक प्रकार चर का उपयोग करके।
लेकिन एक प्रकार का चर टाइप कर सकता है। हम हमेशा नहीं जानते कि हमारे फ़ंक्शन को बिल्कुल हर प्रकार के लिए कैसे परिभाषित किया जाए। उदाहरण के लिए, (>)
फ़ंक्शन केवल उन प्रकारों के लिए समझ में आता है जिनके तत्व तुलनीय हैं। संकलक को फ़ंक्शन लिखने से रोकने में मदद के लिए क्रम में, जिस प्रकार का हस्ताक्षर बहुत सामान्य है, को अस्वीकार कर देगा।
अपने उदाहरण में, Eq
एक प्रकार नहीं है। यह टाइपक्लास - प्रकारों के सेट के लिए एक नाम है। हम typeclass class
कीवर्ड का उपयोग नाम ऐलान करते हैं और वर्ग instance
कीवर्ड का उपयोग में प्रकार जोड़ते हैं। एक टाइपक्लास का उद्देश्य बाधा में को एक प्रकार चर के दायरे को सीमित करने के लिए उपयोग किया जाना है।
प्रकार और बहुलकता के लिए हास्केल दृष्टिकोण "हिंडली-मिलनर प्रकार प्रणाली" पर आधारित है। यह एक अत्यंत सटीक डेटा यह आसान संकलक अपने कार्यक्रम में प्रकार के बारे में खुफिया की एक बड़ी राशि देने के लिए करता है कि वर्णन करने का अभी तक बहुत अर्थपूर्ण तरीका है। यही कारण है कि खुफिया में मदद करता है संकलक प्रकार स्वचालित रूप से अनुमान लगाने के लिए, आप अपने कार्यक्रम सही प्राप्त करने में मदद का एक बहुत कुछ देने के लिए, और संकलित परिणाम अनुकूलन करने के लिए अन्य लाभों के साथ।
लेकिन सावधान रहें - यह ओओपी में उपयोग किए जाने वाले के प्रकार से बहुत अलग है, जो कि आप का उपयोग किया जा सकता है।ओओ प्रोग्राम और हास्केल प्रोग्राम के बीच आमतौर पर प्रत्यक्ष अनुवाद नहीं होता है। आपको शुरुआत के बारे में से शुरू करने के तरीके को अलग तरीके से सोचना होगा। विशेष रूप से सावधान रहें कि "कक्षा" और "उदाहरण" के हास्केल की अवधारणाओं को को पूरी तरह अलग तरीके से उन शब्दों का उपयोग ओओपी में किया जाता है।
हेस दो कथन बराबर नहीं हैं –