2011-12-13 16 views
24

स्कैला सिस्टम एफ ω के आधार पर एक प्रकार-प्रणाली का उपयोग करता है, जिसे सामान्य रूप से दृढ़ता से सामान्यीकृत कहा जाता है। दृढ़ता से सामान्यीकरण गैर-ट्यूरिंग पूर्णता का तात्पर्य है।स्कैला के प्रकार-सिस्टम की कौन सी संपत्ति इसे ट्यूरिंग-पूर्ण बनाती है?

फिर भी, स्कैला की प्रकार-प्रणाली ट्यूरिंग-पूर्ण है।

कौन सा परिवर्तन/जोड़/संशोधन स्काला के प्रकार-सिस्टम को औपचारिक एल्गोरिदम और सिस्टम की तुलना में ट्यूरिंग-पूर्ण बनाता है?

+4

का समर्थन करता है लिंक/संदर्भ? (दर्शकों के लिए, मेरे जैसे :-) –

+7

तथ्य यह है कि सिस्टम एफ दृढ़ता से सामान्यीकरण का तात्पर्य है कि सिस्टम एफ ट्यूरिंग पूर्ण नहीं है। यह इस बात का तात्पर्य नहीं है कि इसकी प्रकार प्रणाली नहीं है। और वास्तव में यह दिखाया गया है कि [एक अप्रतिबंधित सिस्टम एफ टाइपशेक करना अनिवार्य है] (http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.6.6483) – sepp2k

+0

@ sepp2k - yikes, ट्यूरिंग-पूर्णता के बारे में सबसे बुरी बात यह है कि इसे मिला है। – Malvolio

उत्तर

4

यह एक व्यापक उत्तर नहीं है, लेकिन इसका कारण यह है कि आप रिकर्सिव प्रकारों को परिभाषित कर सकते हैं।

मैंने पहले से ही इसी तरह के प्रश्न पूछे हैं (about what a non-Turing complete language might look like)। उत्तर फॉर्म के थे: एक ट्यूरिंग पूर्ण भाषा को मनमाने ढंग से लूपिंग या रिकर्सन का समर्थन करना चाहिए। स्कैला का प्रकार सिस्टम बाद के

+3

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

+2

मेरा मतलब है कि पीनो एन्कोडिंग के अर्थ में रिकर्सिव प्रकार: http://apocalisp.wordpress.com/2010/06/08/type-level-programming-in-scala/ 'type' का उपयोग करके, 'वर्ग' या' ' trait'। मैंने सोचा कि संदर्भ के कारण उचित रूप से स्पष्ट था। जैसे मैंने कहा, मैं यहां प्रतिध्वनि कर रहा हूं, जो मुझे पूरा करने के बारे में बताया गया है। –

+1

[रिकर्सिव प्रकार] (http://en.wikipedia.org/wiki/Recursive_data_type) का उपयोग आपके जैसे नंबर एन्कोड करने के लिए किया जा सकता है, लेकिन वे ट्यूरिंग पूर्णता के लिए पर्याप्त नहीं हैं। आप जो चाहते हैं वह गणना करने का एक तरीका है, इस मामले में टाइप एप्लिकेशन का उपयोग करना (जो बदले में प्रतिस्थापन का उपयोग करता है)। स्कैला के प्रकार के सदस्य इसे थोड़ा आसान बनाते हैं, हालांकि जावा जेनेरिक के लिए समान प्रतिस्थापन करता है। –