Hindley-Milner एल्गोरिथम कभी भी t1 -> t2 जैसे प्रकार का उत्पादन नहीं करेगा।


14

मैं एक कार्यान्वयन लिखते समय हिंडले-मिलनर टाइपिंग एल्गोरिथ्म के बारे में पढ़ रहा हूं , और देखें कि जब तक प्रत्येक चर बाध्य है, आपको हमेशा परमाणु प्रकार या प्रकार मिलेंगे जहां तर्क अंतिम प्रकार का निर्धारण करेंगे, जैसे t1 -> t1या (t1 -> t2) -> (t1 -> t2)कहाँ t1और t2प्रकार चर रहे हैं।

मैं ऐसे तरीके के बारे में नहीं सोच सकता , जिसमें आपको कुछ ऐसा मिलेगा t1 -> t2या बस t1, जो मुझे समझ में आएगा कि एल्गोरिथ्म टूट गया है क्योंकि वास्तविक प्रकार के अभिव्यक्ति को निर्धारित करने का कोई तरीका नहीं होगा। आप कैसे जानते हैं कि आपको कभी भी इन प्रकार के "टूटे" वाले नहीं मिलेंगे जब तक कि प्रत्येक चर बाध्य नहीं होता है?

मुझे पता है कि एल्गोरिथ्म चर के साथ प्रकार देता है, लेकिन ये हमेशा फ़ंक्शन के तर्क पास करने के बाद हल हो जाते हैं, जो प्रकार के साथ एक फ़ंक्शन में नहीं होगा t1 -> t2। यही कारण है कि मैं जानना चाहता हूं कि हम कैसे जानते हैं कि एल्गोरिथ्म कभी भी इस प्रकार के उपज नहीं देगा।

(ऐसा लगता है कि आप एमएल में इन "टूटे हुए" प्रकार प्राप्त कर सकते हैं , लेकिन मैं लैम्ब्डा पथरी के बारे में पूछ रहा हूं।)

जवाबों:


16

हिंडले-मिलनर प्रकार प्रणाली के साथ कोई स्थिरांक के साथ लैम्ब्डा कैलकुलस में, आपको कोई भी ऐसा प्रकार नहीं मिल सकता है जहां फ़ंक्शन का परिणाम एक अनसुलझे प्रकार चर है। सभी प्रकार के चर को कहीं न कहीं "मूल" होना चाहिए। उदाहरण के लिए, वहाँ प्रकार का कोई शब्द है , लेकिन वहाँ के प्रकार के एक शब्द है ∀ अल्फा ।∀α,β।α→β (पहचान समारोह λ x । x )।∀α।α→αλएक्स।एक्स

Intuitively, प्रकार की अवधि प्रकार की अभिव्यक्ति का निर्माण करने में सक्षम होने की आवश्यकता है बीटा हवा से। यह देखना आसान है कि ऐसा कोईमूल्यनहीं हैजिसकाकोईप्रकार हो। अधिक सटीक रूप से, यदि प्रकार चर β पर्यावरण में किसी भी शब्द चर के प्रकार में प्रकट नहीं होता है, तो टाइप β का कोई शब्द नहीं हैजो सिर सामान्य रूप में है। आप शब्द पर संरचनात्मक प्रेरण द्वारा इसे साबित कर सकते हैं: या तो सिर पर चर का प्रकार β होगा , या तर्क में से एक में एक प्रमुख प्रकार शामिलहोना होगा β , यानी एक छोटा उपयुक्त शब्द होगा।∀α,β।α→ββββββ

सिर्फ इसलिए कि एक निश्चित प्रकार का कोई मूल्य नहीं है, इसका मतलब यह नहीं है कि उस प्रकार का कोई शब्द नहीं है: कोई शब्द नहीं हो सकता है जिसका कोई मूल्य नहीं है, अर्थात एक गैर-समाप्ति शब्द (ठीक से बोलना, कोई सामान्य रूप वाला शब्द)। इस प्रकार के लंबोदर शब्द का कोई कारण नहीं है कि सभी अच्छी तरह से टाइप किए गए एचएम शब्द दृढ़ता से सामान्य हो रहे हैं। यह परिणाम का एक सामान्यीकरण है जो बताता है कि बस टाइप किए गए लैम्ब्डा कैलकुलस दृढ़ता से सामान्य कर रहा है। यह इस तथ्य का परिणाम है कि सिस्टम एफ जोरदार रूप से सामान्य कर रहा है: सिस्टम एफ एचएम की तरह है, लेकिन प्रकार में हर जगह टाइप मात्राओं को अनुमति देता है, न कि केवल टॉपवेल पर। उदाहरण के लिए, सिस्टम एफ में, प्रकार है ( ∀ अल्फा । अल्फा ) → ( ∀ अल्फा । अल्फा ) - लेकिन ΔΔ=λएक्स।एक्सएक्स(∀α।α)→(∀α।α) तरह से टाइप्ड नहीं है।ΔΔ

एचएम और सिस्टम एफ एक करी-हावर्ड पत्राचार वाले प्रकार के सिस्टम के उदाहरण हैं : अच्छी तरह से टाइप की गई शर्तें एक निश्चित तर्क में प्रमाण के अनुरूप हैं, और प्रकार सूत्र के अनुरूप हैं। तो एक प्रकार प्रणाली एक सुसंगत सिद्धांत से मेल खाती है, तो उस सिद्धांत जैसे प्रमेयों साबित की अनुमति नहीं है ; इसलिए इसी प्रकार का कोई शब्द है ∀ अल्फा , β ।∀ए,∀बी,ए⇒बी । प्रकार प्रणालीडेटा संरचनाओं पर कार्यों के बारे में "मुक्त करने के लिए प्रमेय" को कम करने की अनुमति देती है।∀α,β।α→β

YY(λएक्स।एक्स)∀α।α∀ए,∀बी,ए⇒बी

टाइप सिस्टमों के बीच महीन रेखा का पता लगाना जो मजबूत सामान्यीकरण और टाइप सिस्टम को सुनिश्चित करता है जो एक कठिन और दिलचस्प समस्या नहीं है। यह एक महत्वपूर्ण समस्या है क्योंकि यह निर्धारित करता है कि कौन से तर्क ध्वनि हैं, दूसरे शब्दों में जो प्रमेयों के प्रमाणों को प्रस्तुत करते हैं। आप सिस्टम एफ की तुलना में बहुत आगे जा सकते हैं, लेकिन नियम अधिक जटिल हो जाते हैं। उदाहरण के लिए, आगमनात्मक निर्माणों की गणना जो कि कोक प्रूफ सहायक का आधार है , दृढ़ता से सामान्यीकृत है, फिर भी उन पर सामान्य आगमनात्मक डेटा संरचनाओं और एल्गोरिदम का वर्णन करने में सक्षम है, और अधिक।

जैसे ही आप वास्तविक प्रोग्रामिंग भाषाओं में आते हैं, पत्राचार टूट जाता है। वास्तविक प्रोग्रामिंग भाषाओं में सामान्य पुनरावर्ती कार्य (जो समाप्त नहीं हो सकते हैं), अपवाद (एक अभिव्यक्ति जो हमेशा अपवाद उठाती है, जैसे मूल्य नहीं होते हैं और इसलिए अधिकांश प्रकार की प्रणालियों में किसी भी प्रकार का हो सकता है), पुनरावर्ती प्रकार (जो गैर-समाप्ति की अनुमति देते हैं) जैसी विशेषताएं हैं में घुसने के लिए, आदि।


"यह इस तथ्य का परिणाम है कि सिस्टम एफ दृढ़ता से सामान्य कर रहा है"। यह कैसे दिखाया जा सकता है कि एचएम दृढ़ता से सामान्य कर रहा है सिस्टम एफ का परिणाम सामान्य रूप से सामान्य रूप से सामान्य है?
— राफेल कास्त्रो

1
@RafaelCastro एचएम में अच्छी तरह से टाइप किया गया हर शब्द सिस्टम एफ में अच्छी तरह से टाइप किया जाता है। सिस्टम एफ में हर टाइप टाइप शब्द एसएन है। इसलिए एचएम में अच्छी तरह से टाइप किया गया हर शब्द एसएन है।
— गिलेस एसओ- बुराई को रोकना '
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.