किस प्रकार की सबसे मजबूत ज्ञात प्रणालियाँ हैं जिनके लिए अनुमान निर्णायक है?


22

यह सर्वविदित है कि हिंडले-मिलनर प्रकार का निष्कर्ष ( बहुरूपता के साथ सरलता से टाइप किए गए -calculus) में निर्णायक प्रकार का इंजेक्शन है: आप बिना किसी एनोटेशन के किसी भी प्रोग्राम के लिए सिद्धांत प्रकारों को फिर से जोड़ सकते हैं।λ

हास्केल-शैली के टाइपसेकल्स को जोड़ना इस निर्णायकता को बनाए रखने के लिए प्रतीत होता है, लेकिन आगे के जोड़ अनाउंसमेंट के बिना अनिच्छुक बनाता है (टाइप परिवार, जीएडीटी, आश्रित-प्रकार, रैंक-एन प्रकार, सिस्टम , आदि।ω

मैं सोच रहा हूँ: पूरी तरह से निर्णायक अनुमान के साथ सबसे मजबूत ज्ञात प्रकार प्रणाली क्या हैं? यह हिंडले-मिलनर (पूरी तरह से निर्णायक) और आश्रित-प्रकार (पूरी तरह से अवांछनीय) के बीच कहीं झूठ बोलने वाला है। क्या डीटी के ऐसे पहलू हैं जिन्हें जोड़ा जा सकता है जो कि रक्षा की गिरावट को रोकते हैं? यह देखने के लिए क्या शोध किया गया है कि इसे कितनी दूर तक धकेला जा सकता है?

मुझे एहसास है कि एक भी मजबूत प्रणाली नहीं है, कि संभावना छोटे छोटे, वृद्धिशील परिवर्तन हैं जिन्हें एचएमडी में रखा जा सकता है। लेकिन सिस्टम के कुछ व्यावहारिक उम्मीदवारों की संभावना है जो खोजे गए हैं।

संपादित करें: यह देखते हुए कि कोई "सबसे मजबूत" प्रणाली नहीं है, मैं एक जवाब स्वीकार करूंगा जो उल्लेखनीय प्रणालियों को रेखांकित करता है जो हिंडले मिलनर को निर्णायक अनुमान के साथ बढ़ाते हैं। उदाहरण तरल प्रकार, रैंक -2, आदि हो सकते हैं।


4
@ जेमाइट मैं यहां दूसरों से सहमत हूं। वास्तव में कोई ज्ञात स्पष्ट सीमा नहीं है। मुझे संदेह है कि वहाँ हो सकता है। Decidability प्रकार का अनुमान वास्तव में सभी भाषा सुविधाओं पर निर्भर करता है, उदाहरण के लिए आपको सबटाइपिंग मिली है या नहीं। एक स्पष्ट सीमा एचएम के एक्सटेंशन में उच्च-रैंक वाले प्रकारों के साथ पाई जा सकती है जहां हम जानते हैं: रैंक k> 2 के लिए, टाइप-इनफरेंस अपरिहार्य है, अन्यथा यह निर्णायक है।
मार्टिन बर्गर

@MartinBerger मैं स्वीकार करता हूं कि कोई सबसे मजबूत नहीं है, लेकिन मुझे लगता है कि अभी भी एक अच्छा जवाब है जो कि उल्लेखनीय -2 को रेखांकित कर रहा है, जैसे कि रैंक -2 जिसका आप उल्लेख करते हैं।
16

1
@jmite टाइप-इनफैक्शन के लिए डिकैडबेलिटी का एक संग्रह होना बहुत अच्छा होगा। ऐसी कोई बात नहीं है, यह सब लगभग 100 के दशक के कागज़ात है। शायद आप एक लिख सकते हैं, यह समुदाय के लिए एक महान सेवा होगी।
मार्टिन बर्गर

यह मुझे दिखता है कि प्रश्न का उत्तर लिखना मुश्किल हो सकता है, लेकिन निश्चित रूप से डिडियर रेमी (इसके संदर्भों के साथ) के हालिया प्रकार के निष्कर्ष कार्य प्रश्नकर्ता के लिए रुचि के हो सकते हैं।
1

जवाबों:


2

[संपादित करें: Voilà प्रत्येक पर कुछ शब्द]

एचएम प्रकार के निष्कासन के कई तरीके हैं। मेरा उत्तर कई, कम या ज्यादा सफल, उनमें से कुछ को लागू करने के प्रयासों पर आधारित है। पहले जिस पर मैंने ठोकर खाई वह पैरामीट्रिक बहुरूपता है । इस दिशा में एचएम को विस्तारित करने की कोशिश करने वाले प्रकार सिस्टम एफ की ओर जाते हैं और इसलिए टाइप एनोटेशन की आवश्यकता होती है। इस दिशा में दो उल्लेखनीय एक्सटेंशन जो मेरे सामने आए:

  • एचएमएफ, यह सभी सिस्टम-एफ प्रकारों के लिए टाइप इंट्रेंस की अनुमति देता है, जिसका अर्थ है कि आपके पास एक प्रकार का "मध्य" में सार्वभौमिक मात्राकरण हो सकता है, उनकी उपस्थिति एचएम पॉलीमॉर्फिक प्रकारों के लिए उच्चतम गुंजाइश पर स्थित नहीं है। कागज स्पष्ट रूप से बताता है कि कोई भी स्पष्ट नियम मौजूद नहीं है कि कितने और कहाँ प्रकार के एनोटेशन की आवश्यकता हो सकती है। साथ ही सिस्टम एफ के प्रकार, शब्द आमतौर पर एक प्रिंसिपल प्रकार नहीं होते हैं।

  • MLF न केवल एचएम का एक विस्तार है, यह सिस्टम एफ का एक विस्तार भी है जो एचएम के प्रमुख प्रकार की संपत्ति को प्रकारों पर एक प्रकार की बाध्य मात्रा का परिचय देकर पुनः प्राप्त करता है। लेखकों द्वारा एक तुलना की गई है, एमएलएफ एचएमएफ की तुलना में कड़ाई से अधिक शक्तिशाली है और एनोटेशन केवल पॉलिमेटिक रूप से उपयोग किए जाने वाले मापदंडों के लिए आवश्यक हैं।

एचएम को विस्तारित करने का एक और तरीका बाधा डोमेन के परिवर्तन के माध्यम से है।

  • HM (X) हिंडले-मिलनर एक बाधा डोमेन X पर परिमाणित है। इस दृष्टिकोण में, एचएम एल्गोरिथ्म एक्स के लिए एक डोमेन सॉल्वर को भेजे जाने वाले अवरोध उत्पन्न करता है। सामान्य एचएम के लिए, डोमेन सॉल्वर एकीकरण प्रक्रिया है और डोमेन समाहित करता है। प्रकार और प्रकार चर से निर्माण की शर्तों का सेट।
    एक्स के लिए एक और उदाहरण प्रेस्बर्गर अंकगणित की भाषा में व्यक्त किया जा सकता है (जिसमें मामले प्रकार की स्थापना / जाँच निर्णायक है) या पीनो अंकगणित की भाषा में (अब निर्णायक नहीं है)। X सिद्धांतों के एक स्पेक्ट्रम के साथ बदलता रहता है, प्रत्येक की अपनी आवश्यकताओं के साथ राशि और प्रकार के एनोटेशन के स्थानीयकरण की आवश्यकता होती है और उन सभी के लिए नहीं।

  • हास्केल के प्रकार की कक्षाएं भी प्रकार के विधेय को जोड़कर बाधा डोमेन का एक प्रकार का विस्तार हैं MyClass(MyType)(जिसका अर्थ है कि टाइप MyType के लिए MyClass का एक उदाहरण मौजूद है)।
    प्रकार की कक्षाएं प्रकार की सुरक्षा को संरक्षित करती हैं क्योंकि वे मूल रूप से (लगभग) ऑर्थोगोनल अवधारणाएं हैं जो वे एडहॉक बहुरूपता को लागू करती हैं ।
    एक उदाहरण के रूप में, उस valप्रकार का प्रतीक val :: MyClass a => aलें जिसके लिए आपके पास उदाहरण हो सकते हैं MyClass A, MyClass Bआदि। जब आप अपने कोड में उस प्रतीक का उल्लेख करते हैं, तो यह वास्तव में है क्योंकि प्रकार का अनुमान पहले से ही लगाया जाता है कि संकलक वर्ग के किस उदाहरण का उपयोग कर सकता है। इसका मतलब यह है कि जिस प्रकार का valउपयोग किया जाता है उस संदर्भ पर निर्भर करता है। यही कारण है कि एक भी valबयान चलाने से एक होता हैambiguous type error : संकलक संदर्भ के आधार पर किसी भी प्रकार का अनुमान नहीं लगा सकता है।

अधिक उन्नत प्रकार के सिस्टम जैसे GADTs, प्रकार के परिवार, निर्भर प्रकार, सिस्टम (F) like, आदि के लिए, टाइप अब "प्रकार" नहीं हैं, वे जटिल कम्प्यूटेशनल ऑब्जेक्ट बन जाते हैं। उदाहरण के लिए इसका मतलब यह है कि एक ही तरह के नहीं दिखने वाले दो प्रकार अलग-अलग नहीं हैं। तो प्रकार समानता तुच्छ नहीं बन जाती है (बिल्कुल भी)।

आपको वास्तविक जटिलता का एक उदाहरण देने के लिए आइए निर्भर प्रकार की सूची पर विचार करें: सूची में वस्तुओं का प्रकार NList a nकहां aहै और nइसकी लंबाई क्या है।
एपेंड फंक्शन टाइप होगा append :: NList a n -> NList a m -> NList a (n + m)और जिप फंक्शन होगा zip :: NList a n -> NList b n -> NList (a, b) n
सोचिए अब हमारे पास मेमना है \a: NList t n, b: NList t m -> zip (append a b) (append b a)। यहां जिप का पहला तर्क टाइप का NList t (n + m)और दूसरा टाइप का है NList t (m + n)
लगभग समान, लेकिन जब तक कि टाइप चेकर को यह पता न हो कि "+" प्राकृतिक संख्याओं पर आधारित है, तो इसे फ़ंक्शन को अस्वीकार करना होगा क्योंकि (n + m) शब्दशः (m + n) नहीं है। यह अब प्रकार के अनुमान / प्रकार की जाँच के बारे में नहीं है, यह प्रमेय साबित करने के बारे में है।

तरल प्रकार कुछ आश्रित प्रकार की खोज कर रहे हैं। लेकिन जैसा कि मैं इसे समझता हूं, यह वास्तव में निर्भर प्रकार नहीं है, सामान्य एचएम प्रकारों की तरह कुछ और जिन पर स्थैतिक सीमा की गणना करने के लिए अतिरिक्त आक्रमण किया जाता है।

आशा है कि ये आपकी मदद करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.