haskell निर्भर प्रकार है?


20

मुझे पता है कि हास्केल के पास पहले से ही एक अन्य प्रकार (सी ++ में टेम्प्लेट प्रोग्रामिंग के समान) पर टाइप करने की क्षमता है, लेकिन मैं सोच रहा हूं कि क्या हास्केल एक प्रकार से मानों पर भी टाइप कर सकता है - क्या यह निर्भर प्रकारों का समर्थन करता है। निर्भर प्रकारों के साथ, आपके पास एक प्रकार हो सकता है जो पूर्णांकों पर पैरामीट्राइज़ किया गया है, उदाहरण के लिए आकार n के वैक्टर, आकार n × m के मैट्रीस आदि।

यदि नहीं, तो क्यों नहीं? और क्या इसकी कोई संभावना है कि भविष्य में इसका समर्थन किया जाएगा?

जवाबों:


18

हास्केल के पास पूर्ण निर्भर प्रकार नहीं हैं, हालांकि यह एक्सटेंशन जैसे DataKindsऔर के साथ बहुत करीब हो सकता है TypeFamilies। इस मुद्दे पर, जहां तक ​​मुझे पता है, यह है कि मूल्य-स्तर हास्केल में स्पष्ट बॉटम्स हैं लेकिन टाइप-स्तरीय हास्केल नहीं है।

यह आपको मानों के- DataKindस्थानांतरण सहित अन्य प्रकार के पैरामीट्रिंज प्रकारों से नहीं रोकता है । जीएचसी 7.6 के रूप में, और DataKindsसक्षम होने के साथ , आप टाइप-लेवल नेकल्स और स्ट्रिंग्स, साथ ही टाइप-लेवल ट्यूपल्स, टाइप-लेवल लिस्ट्स और किसी भी (गैर-उच्च-प्रकार-रहित, गैर-सामान्यीकृत) के टाइप-लेवल का उपयोग कर सकते हैं। , गैर-विवश) बीजीय डेटा प्रकार, जो टेम्पलेट में पूर्णांक का उपयोग करने के लिए C ++ की क्षमता के समान (लेकिन बहुत अधिक सामान्य) है।


1
क्या जीएचसी 8 में आने वाले बदलाव पूर्ण निर्भर प्रकार जोड़ते हैं?
Janus Troelsen

@JanusTroelsen बिलकुल नहीं; वे निर्भर प्रकार सक्षम करते हैं ।
पंथरेन की लौ

8

Ptharien की ज्वाला ने वर्तमान स्थिति के बारे में अच्छी तरह से समझाया कि क्या थोड़ा विस्तार करने के लिए - और जीएचसी हास्केल प्रत्येक संस्करण के साथ आश्रित प्रकार (जबकि चरण पृथक्करण को संरक्षित करते हुए) की दिशा में आगे बढ़ रहा है।

तो उदाहरण के लिए ICFP 2013 में इस सितंबर में, इस प्रक्रिया के अगले चरण पर एक पेपर प्रस्तुत किया जाना चाहिए, "प्रकार निर्भरता से टाइप किए गए हास्केल: सिस्टम एफसी को समान समानता के साथ" , प्रकार और प्रकार के स्तर को ढहाने के बारे में। जैसा कि कुछ 3 साल पहले योजना होने की घोषणा की गई थी

और इसमें अगले चरण का भी उल्लेख किया गया है: "हम यह भी जानते हैं कि एडम गुंडरी के आगामी शोध प्रबंध में सिस्टम एफसी के एक संस्करण में version-प्रकार शामिल होंगे और हम इस सुविधा को स्रोत भाषा में भी उपलब्ध कराना चाहते हैं। (व्यक्तिगत संचार)"


2

हास्केल ने पारंपरिक रूप से इसे नकली बनाने की कोशिश की है, लेकिन अंतिम परिणाम एक बहुत बड़ा और प्रतीत होता है दोहरावदार प्रकार की प्रणाली है। लेकिन यह जल्द ही बदल सकता है! देख:

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