हास्केल की तुलना में किस अनुसंधान भाषाओं में एक मजबूत प्रकार है और क्यों?


14

यहाँ मैंने पढ़ा है कि:

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

इसलिए मैं दो चीजें पूछ रहा हूं:

  1. किस अनुसंधान भाषाओं में हास्केल की तुलना में अधिक शक्तिशाली प्रकार की प्रणालियां हैं;
  2. वे क्या सुधार करते हैं।

मैं सिर्फ एक प्रोग्रामर हूं, इसलिए मैं नहीं जानता कि कई गणितीय ऑब्जेक्ट्स टाइप थ्योरी में उपयोग किए जाते हैं, कृपया यदि आप कर सकते हैं तो कोमल स्पष्टीकरण प्रदान करें।


3
बेहतर क्या है"?
डेविड रिचेर्बी

2
@DavidRicherby मुझे लगता है कि अधिक शक्तिशाली प्रकार प्रणाली का
Виталий Олегович

2
एक बार जब आपने साबित कर दिया कि एक प्रकार की प्रणाली ट्यूरिंग-पूर्ण है , तो क्या यह वास्तव में मायने रखता है? ;-)
DevSolar

7
ट्यूरिंग मशीनें ट्यूरिंग-पूर्ण हैं, आप उन्हें अपने रोजमर्रा के प्रोग्रामिंग कार्यों के लिए उपयोग क्यों नहीं करते हैं?
13

4
ध्यान दें कि मूल पाठ में अधिक उन्नत प्रकार की प्रणालियों के साथ भाषाओं का उल्लेख है और यह दावा नहीं करता है कि एक प्रकार की प्रणाली के लिए 'अधिक उन्नत' बेहतर या बदतर है।
पीटरिस

जवाबों:


25

सवाल कुछ समस्याग्रस्त है, क्योंकि यह "बेहतर" की व्यक्तिपरक परिभाषा पर निर्भर करता है।

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

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

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

एक अन्य शोध भाषा जो हास्केल की तुलना में "बेहतर" है, लिक्विडहास्केल है । यह विशेष रूप से विशेष टिप्पणियों से पार्स किए गए शोधन प्रकारों के साथ हास्केल है।

शोधन प्रकार आपको गुणों के साथ परिष्कृत करने की अनुमति देते हैं। उदाहरण के लिए, एक होने के बजाय Int, आप निर्दिष्ट कर सकते हैं {i : Int | i > 0}, सभी सकारात्मक पूर्णांकों का प्रकार। शोधन के प्रकारों के साथ प्रकार का अनुमान निर्णायक है, लेकिन आप उन पर निर्भरता के साथ कई प्रकार के गुणों को साबित नहीं कर सकते।

वहाँ अन्य शोधन प्रकार सिस्टम हैं, लेकिन मैं उनमें से किसी के साथ बहुत परिचित नहीं हूँ।


धन्यवाद! क्या यह साबित करना संभव है कि हास्केल प्रकार प्रणाली सबसे मजबूत है जो अभी भी प्रकार की अनुमति देता है?
Виталий Олегович

3
हास्केल निश्चित रूप से सबसे मजबूत नहीं है जो टाइप इंट्रेंस की अनुमति देता है। जिन शोधन प्रकारों का मैंने उल्लेख किया है, वे प्रकार की अनुमति के लिए अनुमति देते हैं, और कई जीएचसी एक्सटेंशन हास्केल में जोड़े जा रहे हैं जो थोड़ी मजबूत प्रणाली के लिए अनुमति देते हैं।
jmite

4
इसके शीर्ष पर, कई प्रकार की प्रणालियां हैं, और कई अतुलनीय हैं: वे कुछ तरीकों से हास्केल से अधिक मजबूत होंगे, लेकिन दूसरों में हास्केल की तुलना में कमजोर। मजबूत से लेकर सबसे कमजोर तक प्रकार के सिस्टम का रैखिक क्रम नहीं है।
१ite

5
अब मैं यह साबित करना चाहता हूं कि कोई भी सबसे मजबूत प्रकार की प्रणाली नहीं है जो टाइप इनफैक्शन की अनुमति देती है। बेकार तथ्यों को साबित करने का विरोध करना चाहिए।
बाउर

1
यह तथ्य मुझे बेकार नहीं लगता। ज्ञान है कि एक मजबूत प्रकार की प्रणाली मौजूद है जिसमें टाइप इंट्रेंस बड़ी रुचि होगी, खासकर अगर यह लागू करने के लिए संभव हो।
तर्कसंगत

10

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

  1. बहुरूपी प्रकार
  2. गहराई सबटाइपिंग और कक्षाओं के साथ ऑब्जेक्ट
  3. फ़ंक्टर , जो मॉड्यूल (हास्केल में मॉड्यूल हैं) और यहां तक ​​कि प्रथम श्रेणी के मॉड्यूल के बीच के नक्शे हैं

और कृपया, इसे एमएल-हास्केल शूटआउट में बदलने की आवश्यकता नहीं है, अन्यथा मैं बॉब हार्पर के ब्लॉग पोस्टों से लिंक करना शुरू कर दूंगा; ;-)


9

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

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


3
किसी तरह "प्रकाशित" और "विरोधी अनुसंधान" एक साथ अच्छी तरह से नहीं जाते हैं।
बाउर

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

1
@leftaroundabout आप किस प्रकार के विशिष्ट प्रकार या रैखिक तर्क से परिचित हैं? यदि x का एक विशिष्ट प्रकार है, तो उदाहरण के लिए, f (x, x) अच्छी तरह से टाइप नहीं किया गया है। संभवत: विशिष्ट प्रकार के समर्थन के लिए हास्केल का विस्तार करना संभव हो सकता है। C ++ में चाल शब्दार्थ को मौजूदा प्रकार के सिस्टम के शीर्ष पर विशिष्ट प्रकार के समर्थन में सुधार के रूप में भी देखा जा सकता है।
थॉमस क्लिम्पेल

मैं C ++ चालित शब्दार्थ से परिचित हूं, शायद इसीलिए मेरी विशिष्टता की छाप "एक प्रकार की प्रणाली के बहुत कुछ नहीं" के रूप में है। मुझे जो दिलचस्प लगा वह है, पूर्ण रूप से बाहर की ओर बढ़ रही विशिष्टता प्रकार उन्नत प्रणाली के अन्य सुविधाओं में बाधा?
वामावर्तबाउट

1
@leftractionabout Rvalue मेरे लिए एक टाइप-सिस्टम चीज़ की तरह ध्वनि का संदर्भ देता है। विशिष्ट प्रकार की विशिष्टता को अन्य उन्नत प्रकार की सुविधाओं में बाधा क्यों बनना चाहिए? सबसे खराब स्थिति में, उन उन्नत सुविधाओं को केवल विशिष्टता प्रकारों पर लागू नहीं किया जाएगा। बेशक, "वास्तविक दुनिया" में विशिष्टता के प्रकार जैसी विशेषताएं गहराई के बजाय चौड़ाई के लिए जा रही हैं, और जब आप व्यापक होने के लिए समय बिताते हैं, तो गहराई तक जाने के लिए नहीं होगा। लेकिन मुझे यह धारणा है कि विशिष्टता के प्रकार सिद्धांत और व्यवहार के बीच एक अच्छा संतुलन प्रदान करते हैं, इसलिए मुझे लगता है कि समय अच्छी तरह से व्यतीत होगा।
थॉमस क्लिम्पेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.