वर्ग टाइप करें
कंप्यूटर विज्ञान में, एक प्रकार का वर्ग एक प्रकार प्रकार प्रणाली निर्माण होता है जो तदर्थ बहुरूपता का समर्थन करता है। यह पैरामीट्रिक बहुरूपता प्रकारों में चर टाइप करने के लिए बाधाओं को जोड़कर प्राप्त किया जाता है। इस तरह की बाधा में आमतौर पर एक प्रकार का वर्ग शामिल होता है T
और एक प्रकार चर a
, और इसका मतलब है a
केवल उस प्रकार के लिए तत्काल किया जा सकता है जिसके सदस्य ओवरलोडेड ऑपरेशंस से जुड़े समर्थन का समर्थन करते हैं T
.
मानक एमएल में eqtypes के विस्तार के रूप में पहली बार फिलिप वाडलर और स्टीफन ब्लॉट द्वारा प्रस्तावित किए जाने के बाद टाइप क्लासेस को पहली बार हास्केल (प्रोग्रामिंग भाषा) में लागू किया गया था।[1][2] और मूल रूप से एक सैद्धांतिक फैशन में ऑपरेटर ओवरलोडिंग को कार्यान्वित करने के तरीके के रूप में कल्पना की गई थी।[3][2]मानक एमएल के eqtypes के विपरीत, हास्केल में टाइप क्लास के उपयोग के माध्यम से समानता ऑपरेटर को अधिभारित करने के लिए संकलक दृश्यपटल या अंतर्निहित प्रकार प्रणाली के व्यापक संशोधन की आवश्यकता नहीं होती है।[4]
सिंहावलोकन
प्रकार वर्गों को उनके संबंधित प्रकारों के साथ फ़ंक्शन या स्थिर नामों के एक सेट को निर्दिष्ट करके परिभाषित किया जाता है, जो वर्ग से संबंधित प्रत्येक प्रकार के लिए मौजूद होना चाहिए। हास्केल में, प्रकारों को परिचालित किया जा सकता है; एक प्रकार वर्ग Eq
समानता को स्वीकार करने वाले प्रकार शामिल करने का इरादा निम्नलिखित तरीके से घोषित किया जाएगा:
<वाक्यविन्यास लैंग = हैकेल> वर्ग Eq एक कहाँ
(==) :: ए -> ए -> बूल (/=) :: ए -> ए -> बूल
</वाक्यविन्यास हाइलाइट>
कहां a
प्रकार वर्ग का एक उदाहरण है Eq
, और a
2 कार्यों (समानता और असमानता कार्यों) के लिए फ़ंक्शन हस्ताक्षर परिभाषित करता है, जिनमें से प्रत्येक प्रकार के 2 तर्क लेते हैं a
और एक बूलियन वापस करें।
प्रकार चर a
दयालु है (प्रकार सिद्धांत) ( रूप में भी जाना जाता है Type
नवीनतम ग्लासगो हास्केल कंपाइलर रिलीज़ में),[5] जिसका अर्थ है कि किस प्रकार का Eq
है
<वाक्यविन्यास लैंग = हैकेल> Eq :: प्रकार -> बाधा </वाक्यविन्यास हाइलाइट>
घोषणा को एक प्रकार बताते हुए पढ़ा जा सकता है a
प्रकार वर्ग के अंतर्गत आता है Eq
अगर वहाँ नामित कार्य हैं (==)
, और (/=)
, उस पर परिभाषित उपयुक्त प्रकार के। एक प्रोग्रामर तब एक फ़ंक्शन को परिभाषित कर सकता था elem
(जो निर्धारित करता है कि कोई तत्व सूची में है) निम्नलिखित तरीके से:
<वाक्यविन्यास लैंग = हैकेल> हाथ :: Eq a => a -> [a] -> बूल तत्व वाई [] = झूठा तत्व वाई (एक्स: एक्सएस) = (एक्स == वाई) || तत्व वाई एक्सएस </वाक्यविन्यास हाइलाइट>
कार्यक्रम elem
प्रकार है a -> [a] -> Bool
संदर्भ के साथ Eq a
, जो कि किस प्रकार को विवश करता है a
तक हो सकता है a
जो के हैं Eq
वर्ग टाइप करें। (नोट: हास्केल =>
'वर्ग बाधा' कहा जा सकता है।)
एक प्रोग्रामर किसी भी प्रकार का बना सकता है t
किसी दिए गए प्रकार वर्ग का सदस्य C
उदाहरण घोषणा का उपयोग करके जो सभी के कार्यान्वयन को परिभाषित करता है C
विशेष प्रकार के लिए के तरीके t
. उदाहरण के लिए, यदि कोई प्रोग्रामर एक नए डेटा प्रकार को परिभाषित करता है t
, फिर वे इस नए प्रकार का एक उदाहरण बना सकते हैं Eq
प्रकार के मूल्यों पर एक समानता कार्य प्रदान करके t
जिस तरह से वे फिट दिखते हैं। ऐसा करने के बाद, वे फ़ंक्शन का उपयोग कर सकते हैं elem
पर [t]
, अर्थात्, प्रकार के तत्वों की सूची t
.
ध्यान दें कि ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग लैंग्वेज में टाइप क्लास क्लास (कंप्यूटर साइंस) से अलग हैं। विशेष रूप से, Eq
एक प्रकार नहीं है: प्रकार के मान जैसी कोई चीज़ नहीं है Eq
.
प्रकार वर्ग पैरामीट्रिक बहुरूपता से निकटता से संबंधित हैं। उदाहरण के लिए, ध्यान दें कि प्रकार elem
जैसा कि ऊपर निर्दिष्ट किया गया है पैरामीट्रिकली पॉलीमॉर्फिक प्रकार होगा a -> [a] -> Bool
क्या यह टाइप क्लास बाधा के लिए नहीं थाEq a =>
.
उच्च-दयालु बहुरूपता
एक प्रकार के वर्ग को प्रकार का प्रकार चर नहीं लेना चाहिए (प्रकार सिद्धांत) Type
लेकिन किसी भी तरह का ले सकते हैं। उच्च प्रकार वाले इस प्रकार के वर्गों को कभी-कभी कन्स्ट्रक्टर क्लास कहा जाता है (संदर्भित कन्स्ट्रक्टर टाइप कन्स्ट्रक्टर होते हैं जैसे Maybe
, जैसे कि डेटा कंस्ट्रक्टर्स के बजाय Just
). एक उदाहरण मोनाड (कार्यात्मक प्रोग्रामिंग) | हैMonad
वर्ग:
<वाक्यविन्यास लैंग = हैकेल> क्लास मोनाड एम जहां
वापसी :: ए -> एम ए (>>=) :: एम ए -> (ए -> एम बी) -> एम बी
</वाक्यविन्यास हाइलाइट>
तथ्य यह है कि एम एक प्रकार के चर पर लागू होता है, यह इंगित करता है कि यह प्रकार है Type -> Type
, यानी यह एक प्रकार लेता है और एक प्रकार, प्रकार देता है Monad
ऐसा इसलिए:
<वाक्यविन्यास लैंग = हैकेल> मोनाड :: (प्रकार -> प्रकार) -> बाधा </वाक्यविन्यास हाइलाइट>
बहु-पैरामीटर प्रकार वर्ग
टाइप क्लास कई प्रकार के पैरामीटर की अनुमति देते हैं, और इसलिए टाइप क्लास को टाइप पर संबंध के रूप में देखा जा सकता है।[6] उदाहरण के लिए, ग्लासगो हास्केल कंपाइलर मानक पुस्तकालय में, class IArray
एक सामान्य अपरिवर्तनीय सरणी इंटरफ़ेस व्यक्त करता है। इस वर्ग में, प्रकार वर्ग बाधा IArray a e
मतलब कि a
एक सरणी प्रकार है जिसमें प्रकार के तत्व होते हैं e
. (बहुरूपता पर यह प्रतिबंध ऑब्जेक्ट प्रकार (ऑब्जेक्ट उन्मुख प्रोग्रामिंग) को लागू करने के लिए प्रयोग किया जाता है # उदाहरण के लिए अनबॉक्सिंग सरणी प्रकार।)
बहुपद्धति की तरह[citation needed], बहु-पैरामीटर प्रकार वर्ग एकाधिक तर्कों के प्रकारों और वास्तव में रिटर्न प्रकारों के आधार पर विधि के विभिन्न कार्यान्वयनों को कॉल करने का समर्थन करते हैं। बहु-पैरामीटर प्रकार की कक्षाओं को रनटाइम पर प्रत्येक कॉल पर कॉल करने की विधि की खोज करने की आवश्यकता नहीं होती है;[7]: minute 25:12 बल्कि कॉल करने की विधि पहले संकलित और टाइप क्लास इंस्टेंस के शब्दकोश में संग्रहीत की जाती है, जैसे एकल-पैरामीटर प्रकार कक्षाओं के साथ।
बहु-पैरामीटर प्रकार की कक्षाओं का उपयोग करने वाला हास्केल कोड पोर्टेबल नहीं है, क्योंकि यह सुविधा हास्केल 98 मानक का हिस्सा नहीं है। लोकप्रिय हास्केल कार्यान्वयन, जीएचसी और हग्स (दुभाषिया), बहु-पैरामीटर प्रकार की कक्षाओं का समर्थन करते हैं।
कार्यात्मक निर्भरता
हास्केल में, टाइप क्लासेस को परिष्कृत किया गया है ताकि प्रोग्रामर को टाइप पैरामीटर्स के बीच कार्यात्मक निर्भरता घोषित करने की अनुमति मिल सके- एक अवधारणा कार्यात्मक निर्भरता।[8][9] यही है, प्रोग्रामर यह दावा कर सकता है कि टाइप पैरामीटर के कुछ सबसेट का दिया गया असाइनमेंट विशिष्ट रूप से शेष टाइप पैरामीटर निर्धारित करता है। उदाहरण के लिए, एक सामान्य मोनाड (कार्यात्मक प्रोग्रामिंग) m
जो प्रकार का एक राज्य पैरामीटर वहन करती है s
प्रकार वर्ग की बाधा को संतुष्ट करता है Monad.State s m
. इस बाधा में एक कार्यात्मक निर्भरता है m -> s
. इसका मतलब है कि किसी दिए गए सन्यासी के लिए m
प्रकार वर्ग का Monad.State
, राज्य प्रकार से पहुँचा जा सकता है m
विशिष्ट रूप से निर्धारित है। यह कंपाइलर को अनुमान टाइप करें में मदद करता है, साथ ही प्रोग्रामर को टाइप-निर्देशित प्रोग्रामिंग में मदद करता है।
साइमन पेयटन-जोन्स ने जटिलता के आधार पर हास्केल में कार्यात्मक निर्भरताओं की शुरूआत पर आपत्ति जताई है।[10]
प्रकार वर्ग और अंतर्निहित पैरामीटर
This section does not cite any sources. (January 2012) (Learn how and when to remove this template message) |
प्रकार वर्ग और अंतर्निहित पैरामीटर प्रकृति में बहुत समान हैं, हालांकि काफी समान नहीं हैं। एक प्रकार वर्ग बाधा के साथ एक बहुरूपी कार्य जैसे:
sum :: Num a => [a] -> a
सहज रूप से एक ऐसे फ़ंक्शन के रूप में माना जा सकता है जो स्पष्ट रूप से एक उदाहरण स्वीकार करता है Num
:
sum_ :: Num_ a -> [a] -> a
उदाहरण Num_ a
अनिवार्य रूप से एक रिकॉर्ड है जिसमें उदाहरण की परिभाषा शामिल है Num a
. (यह वास्तव में ग्लासगो हास्केल कंपाइलर द्वारा हुड के तहत किस प्रकार की कक्षाएं लागू की जाती हैं।)
हालांकि, एक महत्वपूर्ण अंतर है: अंतर्निहित पैरामीटर अधिक लचीले होते हैं - आप के विभिन्न उदाहरण पारित कर सकते हैं Num Int
. इसके विपरीत, प्रकार वर्ग तथाकथित सुसंगतता संपत्ति को लागू करते हैं, जिसके लिए आवश्यक है कि किसी भी प्रकार के उदाहरण के लिए केवल एक अद्वितीय विकल्प होना चाहिए। सुसंगतता संपत्ति प्रकार वर्गों को कुछ हद तक एंटीमॉड्यूलर बनाती है, यही कारण है कि अनाथ उदाहरण (ऐसे उदाहरण जो एक मॉड्यूल में परिभाषित होते हैं जिसमें न तो वर्ग होता है और न ही ब्याज का प्रकार) दृढ़ता से हतोत्साहित होता है। दूसरी ओर, सुसंगतता भाषा में सुरक्षा का एक अतिरिक्त स्तर जोड़ती है, जिससे प्रोग्रामर को यह गारंटी मिलती है कि एक ही कोड के दो अलग-अलग हिस्से एक ही उदाहरण साझा करेंगे।[11]
एक उदाहरण के रूप में, एक आदेशित सेट (सार डेटा प्रकार) (प्रकार का Set a
) तत्वों पर कुल आदेश की आवश्यकता होती है (प्रकार a
) कार्य करने के लिए। यह एक बाधा द्वारा प्रमाणित किया जा सकता है Ord a
, जो तत्वों पर एक तुलना ऑपरेटर को परिभाषित करता है। हालाँकि, कुल आदेश लागू करने के कई तरीके हो सकते हैं। चूंकि सेट एल्गोरिदम आम तौर पर एक सेट के निर्माण के बाद ऑर्डरिंग में बदलाव के असहिष्णु होते हैं, एक असंगत उदाहरण पारित करते हैं Ord a
सेट पर काम करने वाले कार्यों के लिए गलत परिणाम (या क्रैश) हो सकते हैं। इस प्रकार, की सुसंगतता को लागू करना Ord a
इस विशेष परिदृश्य में महत्वपूर्ण है।
स्काला (प्रोग्रामिंग भाषा) प्रकार की कक्षाओं में उदाहरण (या शब्दकोश) पूरी तरह से अलग प्रकार की इकाई के बजाय भाषा में केवल सामान्य मान हैं।[12][13] जबकि ये उदाहरण डिफ़ॉल्ट रूप से स्पष्ट रूप से घोषित निहित औपचारिक मापदंडों के लिए निहित वास्तविक मापदंडों के रूप में उपयोग किए जाने वाले दायरे में उपयुक्त उदाहरणों को खोजने के द्वारा आपूर्ति किए जाते हैं, तथ्य यह है कि वे सामान्य मूल्य हैं, इसका मतलब है कि अस्पष्टता को हल करने के लिए उन्हें स्पष्ट रूप से आपूर्ति की जा सकती है। नतीजतन, स्काला प्रकार की कक्षाएं सुसंगतता की संपत्ति को संतुष्ट नहीं करती हैं और प्रभावी रूप से निहित मापदंडों के लिए एक वाक्यात्मक चीनी हैं।
यह कैट्स से लिया गया एक उदाहरण है [14] प्रलेखन:
<वाक्यविन्यास प्रकाश लैंग = स्कैला> // टेक्स्ट प्रतिनिधित्व प्रदान करने के लिए एक प्रकार का वर्ग विशेषता शो [ए] {
डीईएफ़ शो (एफ: ए): स्ट्रिंग
}
// एक बहुरूपी कार्य जो केवल तभी काम करता है जब कोई निहित हो // शो का उदाहरण [ए] उपलब्ध है डीईएफ़ लॉग [ए] (ए: ए) (अंतर्निहित एस: शो [ए]) = प्रिंट्लन (एस शो (ए))
// स्ट्रिंग के लिए एक उदाहरण अंतर्निहित वैल स्ट्रिंगशो = नया शो [स्ट्रिंग] {
डीईएफ़ शो (एस: स्ट्रिंग) = एस
}
// पैरामीटर stringShow कंपाइलर द्वारा डाला गया था। स्कैला> लॉग (एक स्ट्रिंग) एक स्ट्रिंग </वाक्यविन्यास हाइलाइट>
Coq (संस्करण 8.2 आगे) भी उपयुक्त उदाहरणों का हवाला देकर टाइप क्लास का समर्थन करता है।[15] Agda (प्रमेय प्रोवर) 2 के हाल के संस्करण भी एक समान सुविधा प्रदान करते हैं, जिसे उदाहरण तर्क कहा जाता है।[16]
ऑपरेटर ओवरलोडिंग के लिए अन्य दृष्टिकोण
मानक एमएल में, समानता प्रकार का तंत्र मोटे तौर पर हास्केल के अंतर्निर्मित प्रकार वर्ग से मेल खाता है Eq
, लेकिन सभी समानता ऑपरेटरों को संकलक द्वारा स्वचालित रूप से प्राप्त किया जाता है। प्रक्रिया का प्रोग्रामर का नियंत्रण यह निर्दिष्ट करने तक सीमित है कि संरचना में किस प्रकार के घटक समानता प्रकार हैं और समानता प्रकारों पर बहुरूपी प्रकार की श्रेणी में किस प्रकार के चर हैं।
एसएमएल और OCaml के मॉड्यूल और फ़ैक्टर हास्केल के प्रकार के वर्गों के समान भूमिका निभा सकते हैं, मुख्य अंतर प्रकार अनुमान की भूमिका है, जो तदर्थ बहुरूपता के लिए उपयुक्त प्रकार वर्ग बनाता है।[17] OCaml का ऑब्जेक्ट ओरिएंटेड सबसेट अभी तक एक और दृष्टिकोण है जो कि एक प्रकार की कक्षाओं के लिए कुछ हद तक तुलनीय है।
संबंधित धारणाएँ
अतिभारित डेटा (ग्लासगो हास्केल कंपाइलर में लागू) के लिए एक समान धारणा प्रकार परिवार की है।[18] C ++ में विशेष रूप से C ++ 20 में अवधारणाएं (सी ++) C ++) का उपयोग करके टाइप क्लास के लिए समर्थन है। एक दृष्टांत के रूप में, टाइपक्लास Eq के उपर्युक्त हास्केल उदाहरण को इस प्रकार लिखा जाएगा
<वाक्यविन्यास लैंग = सीपीपी> टेम्पलेट <टाइपनेम टी> अवधारणा बराबर =
आवश्यकता है (टी ए, टी बी) { {ए == बी} -> एसटीडी :: परिवर्तनीय_तो <बूल>; {ए! = बी} -> एसटीडी :: परिवर्तनीय_तो <बूल>;
}; </वाक्यविन्यास हाइलाइट>
स्वच्छ (प्रोग्रामिंग भाषा) में टाइपक्लास हास्केल के समान हैं, लेकिन थोड़ा अलग सिंटैक्स है।
जंग (प्रोग्रामिंग भाषा) विशेषता (कंप्यूटर प्रोग्रामिंग) का समर्थन करती है, जो सुसंगतता के साथ प्रकार की कक्षाओं का एक सीमित रूप है।[19] बुध (प्रोग्रामिंग भाषा) में टाइपक्लास हैं, हालांकि वे बिल्कुल हास्केल के समान नहीं हैं।[further explanation needed] स्काला (प्रोग्रामिंग लैंग्वेज) में, टाइप क्लास एक प्रोग्रामिंग मुहावरा है, जिसे मौजूदा भाषा सुविधाओं जैसे कि निहित मापदंडों के साथ लागू किया जा सकता है, प्रति अलग भाषा सुविधा नहीं। जिस तरह से वे स्काला में कार्यान्वित किए जाते हैं, अस्पष्टता के मामले में, स्पष्ट रूप से निर्दिष्ट करना संभव है कि कोड में किसी विशेष स्थान पर किसी प्रकार के लिए किस प्रकार का वर्ग उदाहरण उपयोग करना है। हालाँकि, यह आवश्यक रूप से एक लाभ नहीं है क्योंकि अस्पष्ट प्रकार के वर्ग के उदाहरण त्रुटि-प्रवण हो सकते हैं।
प्रूफ असिस्टेंट Coq (प्रूफ असिस्टेंट) ने भी हाल के संस्करणों में टाइप क्लासेस का समर्थन किया है। सामान्य प्रोग्रामिंग भाषाओं के विपरीत, Coq में, किसी प्रकार के वर्ग के किसी भी कानून (जैसे कि मोनैड कानून) जो कि प्रकार वर्ग परिभाषा के भीतर बताए गए हैं, उनका उपयोग करने से पहले प्रत्येक प्रकार के वर्ग उदाहरण के गणितीय रूप से सिद्ध होना चाहिए।
यह भी देखें
- बहुरूपता (कंप्यूटर विज्ञान) (अन्य प्रकार के बहुरूपता)
- हास्केल (प्रोग्रामिंग लैंग्वेज) (वह भाषा जिसमें पहली बार टाइप क्लास डिजाइन किए गए थे)
- ऑपरेटर ओवरलोडिंग (टाइप क्लास का एक आवेदन)
- मोनाड (कार्यात्मक प्रोग्रामिंग) (
Monad
एक प्रकार वर्ग का एक उदाहरण है) - अवधारणाएँ (C++) (C++20 के बाद से)
- जंग (प्रोग्रामिंग भाषा)
संदर्भ
- ↑ Morris, John G. (2013). टाइप क्लासेस एंड इंस्टेंस चेन्स: ए रिलेशनल एप्रोच (PDF) (PhD). Department of Computer Science, Portland State University. doi:10.15760/etd.1010.
- ↑ 2.0 2.1 Wadler, P.; Blott, S. (1989). "How to make ad-hoc polymorphism less ad hoc". प्रोग्रामिंग भाषाओं के सिद्धांतों पर 16वीं ACM SIGPLAN-SIGACT संगोष्ठी की कार्यवाही (POPL '89). Association for Computing Machinery. pp. 60–76. doi:10.1145/75277.75283. ISBN 0897912942. S2CID 15327197.
- ↑ Kaes, Stefan (March 1988). "बहुरूपी प्रोग्रामिंग भाषाओं में पैरामीट्रिक ओवरलोडिंग". Proc. 2nd European Symposium on Programming Languages. doi:10.1007/3-540-19027-9_9.
- ↑ Appel, A.W.; MacQueen, D.B. (1991). "Standard ML of New Jersey". In Maluszyński, J.; Wirsing, M. (eds.). प्रोग्रामिंग भाषा कार्यान्वयन और तर्क प्रोग्रामिंग। पीएलआईएलपी 1991. Lecture Notes in Computer Science. Vol. 528. Springer. pp. 1–13. CiteSeerX 10.1.1.55.9444. doi:10.1007/3-540-54444-5_83. ISBN 3-540-54444-5.
- ↑
Type
fromData.Kind
appeared in version 8 of the Glasgow Haskell Compiler - ↑ Haskell' page MultiParamTypeClasses.
- ↑ In GHC, the C Core uses Girard & Reynold's System F type signatures to identify a typed case for processing in the optimization phases. -- Simon Peyton-Jones "Into the Core - Squeezing Haskell into Nine Constructors" Erlang User Conference, Sep 14, 2016
- ↑ Jones, Mark P. (2000). "Type Classes with Functional Dependencies". In Smolka, G. (ed.). प्रोग्रामिंग भाषाएँ और प्रणालियाँ। ईएसओपी 2000. Lecture Notes in Computer Science. Vol. 1782. Springer. pp. 230–244. CiteSeerX 10.1.1.26.7153. doi:10.1007/3-540-46425-5_15. ISBN 3-540-46425-5.
- ↑ Haskell' page FunctionalDependencies.
- ↑ Peyton-Jones, Simon (2006). "MPTCs और कार्यात्मक निर्भरताएँ". Haskell-prime mailing list.
- ↑ Kmett, Edward. वर्ग बनाम विश्व टाइप करें. Boston Haskell Meetup. Archived from the original on 2021-12-21.
- ↑ Oliveira, Bruno C.d.S.; Moors, Adriaan; Odersky, Martin (2010). "Type Classes as Objects and Implicits" (PDF). ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग सिस्टम लैंग्वेज और एप्लिकेशन पर ACM अंतर्राष्ट्रीय सम्मेलन की कार्यवाही (OOPSLA '10). Association for Computing Machinery. pp. 341–360. CiteSeerX 10.1.1.205.2737. doi:10.1145/1869459.1869489. ISBN 9781450302036. S2CID 207183083.
- ↑ "द नियोफाइट्स गाइड टू स्काला पार्ट 12: टाइप क्लासेस - डेनियल वेस्टहाइड".
- ↑ typelevel.org, Scala Cats
- ↑ Castéran, P.; Sozeau, M. (2014). "Coq में टाइप क्लासेस और रिलेशंस का एक सौम्य परिचय" (PDF). CiteSeerX 10.1.1.422.8091.
- ↑ "Modelling Type Classes With Instance Arguments".
- ↑ Dreyer, Derek; Harper, Robert; Chakravarty, Manuel M.T. (2007). "Modular Type Classes". प्रोग्रामिंग भाषाओं के सिद्धांतों पर 34वें वार्षिक ACM SIGPLAN-SIGACT संगोष्ठी की कार्यवाही (POPL '07). pp. 63–70. See p. 63. doi:10.1145/1190216.1190229. ISBN 978-1595935755. S2CID 1828213. TR-2006-03.
- ↑ "जीएचसी/प्रकार परिवार - HaskellWiki".
- ↑ Turon, Aaron (2017). "विशेषज्ञता, सुसंगतता और एपीआई विकास".
- Peyton Jones, Simon; Jones, Mark; Meijer, Erik (May 1997). "Type classes: an exploration of the design space". Proc. ACM SIGPLAN Haskell Workshop. CiteSeerX 10.1.1.1085.8703.
इस पेज में लापता आंतरिक लिंक की सूची
- तरह (प्रकार सिद्धांत)
- कक्षा (कंप्यूटर विज्ञान)
- आलिंगन (दुभाषिया)
- Agda (प्रमेय प्रमाण)
- परिवार टाइप करें
- सी ++
- Coq (सबूत सहायक)
बाहरी कड़ियाँ
- "5. Type Classes and Overloading". A Gentle Introduction to Haskell. June 2000. Version 98.
- Advanced Functional Programming course at Utrecht University, 74 lecture slides on Advanced Type Classes. 2005-06-07.
- Implementing, and Understanding Type Classes. 2014-11-13.
श्रेणी: कार्यात्मक प्रोग्रामिंग श्रेणी:प्ररूप सिद्धांत श्रेणी:डेटा प्रकार श्रेणी: हास्केल कोड के उदाहरण के साथ लेख
- Articles with unsourced statements from June 2013
- Wikipedia articles needing clarification from May 2018
- Collapse templates
- Navigational boxes
- Navigational boxes without horizontal lists
- Sidebars with styles needing conversion
- Templates generating microformats
- Templates that are not mobile friendly
- Wikipedia metatemplates
- Machine Translated Page
- Created On 02/01/2023