सिस्टम एफ किन कार्यों की गणना नहीं कर सकता है?


28

में ट्यूरिंग संपूर्णता पर इस विकिपीडिया लेख यह है कि कहा गया है:

अनपेड लैम्ब्डा कैलकुलस ट्यूरिंग पूर्ण है, लेकिन सिस्टम एफ सहित कई टाइप किए गए लैम्ब्डा कैल्कुली नहीं हैं। टाइप की गई प्रणालियों का मूल्य अधिक त्रुटियों का पता लगाने के दौरान अधिकांश विशिष्ट कंप्यूटर कार्यक्रमों का प्रतिनिधित्व करने की उनकी क्षमता में आधारित है।

कुल कम्प्यूटेशनल फ़ंक्शन का एक उदाहरण क्या है जो सिस्टम एफ द्वारा असुविधाजनक है ?

इसके अलावा, चूंकि हिंडले-मिलर है:

सिस्टम एफ का प्रतिबंध

इस तथ्य के कारण कि:

प्रकार की जाँच प्रणाली एफ के एक करी-शैली संस्करण के लिए अपरिहार्य है, अर्थात, जिसमें स्पष्ट टाइपिंग एनोटेशन का अभाव है।

क्या इसका मतलब यह है कि लंबो-पथरी अंतर्निहित हिंडले-मिलर प्रकार की प्रणाली पूरी तरह से ठीक नहीं हो रही है?

अगर यह सच है, क्योंकि हैस्केल स्पष्ट रूप से पूरा हो रहा है और हम जानते हैं कि यह आधार है लैम्ब्डा कैलकुलस और हिंडली-मिलनर टाइप सिस्टम, लैम्बडा कैलकुलस में जो विशेषताएं मौजूद नहीं हैं, उन्हें पूरा करने के लिए क्या है?



फीचर का उदाहरण जो हास्केल को पूर्ण बनाता है, देशी कोड इंटरफ़ेस है।
— Trismegistos

@ आपकी टिप्पणी के लिए धन्यवाद। मैं सिस्टम T से परिचित नहीं हूँ। क्या मैं यह मानने के लिए सही हूँ कि सिस्टम T यहाँ उल्लेखित है ? कैसे सिस्टम T की तुलना करता है और सिस्टम F के विपरीत है?
— माइक एचआर

नोट, के लिए googling पर system T vs. system Fमैं कुछ है कि मेरा अंतिम subquestion उत्तर देता पाया कैसे Haskell प्रणाली एफ के लिए ट्यूरिंग-पूर्णता जोड़ दिया: कि के रूप में यहाँ rephrased है
— माइक मानव संसाधन

1
मुझे लगता है कि @Trismegistos एक दिलचस्प दार्शनिक मुद्दा उठाता है: वास्तव में हास्केल क्या है, इसकी सीमाएँ कहाँ हैं?
— मार्टिन बर्जर

जवाबों:


45

सिस्टम काफी एक्सप्रेसिव है। जैसा कि गिरार्ड द्वारा यहाँ सिद्ध किया गया है , टाइप (जहाँ को परिभाषित किया गया है) के कार्य को परिभाषित करते हैं। ) दूसरे क्रम में हीथिंग अरिथमेटिक दूसरे क्रम में निश्चित कार्य ( ) हैं । ध्यान दें कि यह दूसरे क्रम पीनो अंकगणित में निश्चित कार्यों के समान है ।एन → एन एन ∀ एक्स । X → ( X → X ) → X N → N H A 2FN→NN∀X. X→(X→X)→XN→NHA2

आप शायद अधिक पठनीय संदर्भ के रूप में सबूत और प्रकार की जांच करना चाहते हैं । ध्यान दें कि इसका मतलब है कि बहुत सारे प्रोग्राम सिस्टम एफ में लिखे जा सकते हैं, एकरमन फ़ंक्शन से लेकर गोडेल के सिस्टम के लिए दुभाषियों तक । किसी भी कुल प्रोग्रामिंग भाषा के लिए (कुछ हल्की शर्तों के साथ) सिस्टम एक स्व दुभाषिया , यानी एक फ़ंक्शन लागू नहीं कर सकता जो किसी शब्द के लिए एक कोड लेता है का सिस्टम और रिटर्न (a के लिए कोड) लिए सामान्य रूप देताएफ ई वी ए एल : एन → एन टी एफ टीTFeval:N→NtFt। प्रमाण में हॉल्टिंग समस्या की अनिर्वायता के लिए उपयोग की जाने वाली विकर्ण चाल का एक प्रकार शामिल है। इसे यहाँ सुंदर तरीके से समझाया गया है ।

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

हास्केल वास्तव में ट्यूरिंग पूर्ण है। इसे सक्षम करने वाली सबसे विशिष्ट विशेषता (हालांकि अन्य हैं) अप्रतिबंधित पुनरावर्तन की उपस्थिति है : किसी भी कार्यक्रम (फ़ंक्शन) की परिभाषा कार्यक्रम को ही संदर्भित कर सकती है। यह कॉम्बीनेटर के अतिरिक्त के समान है , जैसे कि पीसीएफ की परिभाषा में किया जाता है जो बस टाइप किया जाता है लेकिन कॉम्बिनेटर के साथ ट्यूरिंग-पूर्णता को बरकरार रखता है ।Y यYY

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


1
वाह, यह एक अद्भुत जवाब है और सब कुछ पूरी तरह से जवाब देता है। धन्यवाद!
— माइक एचआर

"किसी भी कुल प्रोग्रामिंग भाषा के लिए ..." यह बिल्कुल सही नहीं है। कुल भाषाओं के लिए कुछ स्व-व्याख्याकार हैं जो गैर-समाप्ति कार्यक्रमों को गैर-टाइप किए गए कार्यक्रमों को छोड़कर, मेरी समझ से काम करते हैं। देखें इस पत्र
— jmite

@jmite के अनुसार, मेरा दावा सही है। उस पेपर का उल्लेख परिचर्चा में किया गया है, और उसके ब्लॉग पर कुछ फॉलोइंग
— cody

11

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


धन्यवाद। हेंडले-मिलर के लिए मेरा मुख्य प्रदर्शन हैस्केल के माध्यम से हुआ है, इसलिए मुझे लगता है कि मैंने मान लिया है कि उच्च-प्रकार के प्रकार इसका एक हिस्सा थे। क्या हिंडले-मिलनर बस प्रकार के संदर्भ (इसलिए सबसे अधिक संभावना एल्गोरिथ्म डब्ल्यू) का उल्लेख कर रहा है? या यह कुछ और है? मैं समझता हूं कि लैम्ब्डा कैलकुलस में इसका गणितीय आधार है, मैं बस यह समझने की कोशिश कर रहा हूं कि हेकेल के शक्तिशाली प्रकार के सिस्टम के बीच तार्किक सीमाएं और "हिंडले-मिलर टाइप सिस्टम" का न्यूनतम कार्यान्वयन क्या होगा।
— माइक एचआर

एनबी अगर किसी को हैस्केल प्रकार प्रणाली की शक्ति में रुचि है, तो मैं हैवेक पर एडवर्ड केमेट के वीडियो की सिफारिश करूंगा , जो हैक्सेल प्रकार प्रणाली का उपयोग करके श्रेणी के सिद्धांत में विलंब (गहरा) करता है।
— माइक एचआर

1
@ माइक-आर आमतौर पर हमारा मतलब है कि Hindley-Milner एक टाइपिंग सिस्टम है या, अधिक सटीक रूप से, टाइप किया हुआ -calculus, जबकि एल्गोरिथ्म Hindley-Milner सिस्टम के लिए एक टाइप-इनविज़न एल्गोरिथम है। हिंडले-मिलनर प्रणाली के बारे में उल्लेखनीय बात यह है कि यह पैरामीट्रिक बहुरूपता को किसी भी प्रकार के एनोटेशन के बिना किसी भी सामान्य प्रोग्राम के सबसे सामान्य प्रकार को समझने की क्षमता के साथ जोड़ती है। विकिपीडिया लेख पढ़ने लायक है। डब्ल्यूλW
— मार्टिन बर्गर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.