टाइप इन्फरेंस (Type Inference)
टाइप इन्फरेंस स्वचालित रूप से एक्सप्रेशंस के प्रकारों (types) का पुनर्निर्माण करता है, जिससे प्रोग्रामर एनोटेशन (annotations) को छोड़ सकते हैं जबकि कंपाइलर सबसे सामान्य टाइपिंग (typing) की गणना करता है।
Definition
टाइप इन्फरेंस (टाइप पुनर्निर्माण) एक एक्सप्रेशन के लिए उसकी संरचना और उपयोग से एक वैध और सबसे सामान्य प्रकार का अनुमान लगाने की प्रक्रिया है, जिसमें प्रोग्रामर को सभी प्रकार के एनोटेशन प्रदान करने की आवश्यकता नहीं होती है।
Scope
यह विषय स्पष्ट एनोटेशन के बिना प्रकारों का अनुमान लगाने के लिए एल्गोरिदम और सिद्धांत को शामिल करता है, जो हिंडले-मिलनर प्रणाली (Hindley-Milner system) और एल्गोरिथम डब्ल्यू (Algorithm W) पर केंद्रित है, जिसमें एकीकरण (unification) और लेट-पॉलीमॉर्फिज्म (let-polymorphism) का उपयोग किया गया है। यह प्रिंसिपल प्रकारों (principal types), निर्णयक्षमता (decidability) और जटिलता (complexity) को संबोधित करता है, और सबटाइपिंग (subtyping), उच्च-रैंक पॉलीमॉर्फिज्म (higher-rank polymorphism), या डिपेंडेंट प्रकारों (dependent types) के साथ समृद्ध प्रणालियों में इन्फरेंस का विस्तार करने की कठिनाइयों को भी बताता है।
Core questions
- जब कोई प्रकार नहीं लिखे जाते हैं तो कंपाइलर प्रकारों का पुनर्निर्माण कैसे कर सकता है?
- प्रिंसिपल प्रकार क्या है, और यह हमेशा कब मौजूद होता है?
- एकीकरण (unification) हिंडले-मिलनर इन्फरेंस को कैसे संचालित करता है?
- समृद्ध प्रकार प्रणालियों में इन्फरेंस अनिर्णायक या अधूरा क्यों हो जाता है?
Key theories
- हिंडले-मिलनर टाइप इन्फरेंस
- मिलनर का पॉलीमॉर्फिक टाइप डिसिप्लिन, एल्गोरिथम डब्ल्यू के साथ, एकीकरण का उपयोग करके लेट-बाउंड पॉलीमॉर्फिज्म के साथ एक लैम्ब्डा कैलकुलस (lambda calculus) के लिए प्रकारों का अनुमान लगाता है, जो एमएल-परिवार की भाषाओं में इन्फरेंस का आधार बनता है।
- प्रिंसिपल टाइप स्कीम्स (Principal type schemes)
- डमास और मिलनर ने सिद्ध किया कि प्रत्येक टाइप करने योग्य एक्सप्रेशन में एक प्रिंसिपल टाइप स्कीम होती है, जो सबसे सामान्य प्रकार है जिससे उसके सभी वैध प्रकार उदाहरण होते हैं, और एल्गोरिथम डब्ल्यू इसकी गणना करता है।
- कॉम्बिनेटरी लॉजिक में प्रिंसिपल प्रकार
- हिंडले ने टाइप करने योग्य पदों के लिए प्रिंसिपल प्रकारों के अस्तित्व को स्थापित किया, एक पूर्ववर्ती परिणाम जो बाद में प्रोग्रामिंग-भाषा टाइप इन्फरेंस का आधार बनता है।
Clinical relevance
टाइप इन्फरेंस स्टैटिकली टाइप्ड भाषाओं को एनोटेशन के बोझ को हटाकर सुरक्षा बनाए रखते हुए कहीं अधिक सुविधाजनक बनाता है, और यह टाइप हिंट्स (type hints) और ऑटो-कंप्लीशन (autocompletion) जैसी आधुनिक संपादक सुविधाओं को शक्ति प्रदान करता है। अभिव्यंजक प्रणालियों में इसकी सीमाएं यह निर्धारित करती हैं कि प्रोग्रामर को अभी भी एनोटेशन कहाँ प्रदान करने होंगे।
History
कॉम्बिनेटरी लॉजिक (combinatory logic) में प्रिंसिपल प्रकारों पर हिंडले (Hindley) का 1969 का काम व्यावहारिक इन्फरेंस का अग्रदूत था। मिलनर (Milner) के 1978 के पेपर ने एमएल (ML) के लिए पॉलीमॉर्फिक टाइप सिस्टम (polymorphic type system) और एल्गोरिथम डब्ल्यू की शुरुआत की, और डमास (Damas) और मिलनर के 1982 के पेपर ने प्रिंसिपैलिटी (principality) को सिद्ध किया। हिंडले-मिलनर प्रणाली एमएल, हास्केल (Haskell) और कई बाद की भाषाओं के लिए मानक बन गई, जिसमें समृद्ध सेटिंग्स में इन्फरेंस का विस्तार करने के लिए निरंतर शोध जारी है।
Debates
- कितना अनुमान लगाना है बनाम कितना एनोटेट करना है
- जैसे-जैसे प्रकार प्रणालियाँ अधिक अभिव्यंजक होती जाती हैं, पूर्ण इन्फरेंस अनिर्णायक हो जाता है, जिससे इस बात पर बहस छिड़ जाती है कि इन्फरेंस को ट्रैक्टेबल (tractable) और अनुमानित रखने के लिए स्वचालित रूप से कितना अनुमान लगाया जाना चाहिए बनाम स्पष्ट एनोटेशन के रूप में कितना आवश्यक होना चाहिए।
Key figures
- Robin Milner
- Luis Damas
- Roger Hindley
- Benjamin Pierce
Related topics
Seminal works
- milner1978
- damas1982
- hindley1969
- pierce2002
Frequently asked questions
- प्रिंसिपल प्रकार क्या है?
- एक प्रिंसिपल प्रकार एक एक्सप्रेशन का सबसे सामान्य प्रकार है, जैसे कि उस एक्सप्रेशन के लिए हर दूसरा वैध प्रकार उसका एक प्रतिस्थापन उदाहरण है; हिंडले-मिलनर इन्फरेंस हमेशा एक प्रिंसिपल प्रकार की गणना करता है जब वह मौजूद होता है।
- सभी प्रकार प्रणालियाँ स्वचालित रूप से प्रकारों का अनुमान क्यों नहीं लगा सकती हैं?
- इन्फरेंस हल करने योग्य बाधाओं पर निर्भर करता है; उच्च-रैंक या डिपेंडेंट प्रकारों जैसी अभिव्यंजक प्रणालियों में, पूर्ण इन्फरेंस अनिर्णायक हो जाता है, इसलिए प्रोग्रामर द्वारा कुछ एनोटेशन प्रदान किए जाने चाहिए।