भरोसेमंद टाइप किए गए एलिमिनेटर कैसे प्राप्त करें?


10

भरोसेमंद रूप से टाइप की गई प्रोग्रामिंग में, डेटा को विघटित करने और पुनरावृत्ति करने के दो मुख्य तरीके हैं:

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

मैं आम डेटाटाइप्स के लिए eliminators देखा है, की तरह , जहां निरसक मूल रूप से गणितीय प्रेरण, या है एल मैं एस टी , जहां निरसक मूल रूप से एक गुना है।NatList

मैं निर्भर पैटर्न मिलान पर कई पत्र पढ़ रहा हूं, और कई प्रकार के सिद्धांतों को संदर्भित करते हैं जिसमें डेटाटिप्स को परिभाषित किया जा सकता है, और सिद्धांत द्वारा निष्कासन प्रदान किए जाते हैं। उदाहरण के लिए, निर्भर प्रतिमान मिलान का वर्णन यह वर्णन करता है कि कैसे UTT को हटाने के आधार पर किया जाता है, और पैटर्न मिलान को स्वयंसिद्ध की उपस्थिति में उन्मूलन में कैसे बदला जा सकता है । मेरी समझ यह है कि, एक डेटाटाइप को परिभाषित करने के बाद, सिद्धांत एलिमिनेटर प्रदान करता है।K

जो मैंने नहीं पाया है (या कम से कम, अगर मैंने इसे देखा है तो मान्यता प्राप्त नहीं है) एक अच्छा वर्णन है कि कोई कैसे निष्कासन को प्राप्त कर सकता है, उनके प्रकार और उनके शब्दार्थ दोनों।

क्या कोई मुझे एक संदर्भ के लिए इंगित कर सकता है जो बताता है कि कैसे एक डेटाटाइप की परिभाषा से एक एलिमिनेटर प्राप्त कर सकता है?


मुझे यकीन है कि कंस्ट्रक्शन या कोक साहित्य की गणना में एक विवरण है (कड़ाई से सकारात्मक प्रकारों के लिए - अधिक जटिल प्रकारों पर Coq के एलिमिनेटर पूरी तरह से सामान्य नहीं हैं)।
गिल्स एसओ- बुराई को रोकना '

@ मेरी समझ यह थी कि Coq ने एलिमिनेटर का उपयोग नहीं किया है, लेकिन इसके बजाय अलग मैच और (गार्ड) फिक्स ऑपरेटरों का उपयोग करता है।
jmite

3
कोर भाषा eliminators का उपयोग नहीं करता है, लेकिन जब आप एक प्रकार को परिभाषित, Coq एक निरसक जो के संदर्भ में परिभाषित किया गया है उत्पन्न करता है fixऔर match। मेरे पास कोई संदर्भ नहीं है, लेकिन मुझे पता है कि मैंने इस बारे में कुछ पढ़ा है कि यह एलिमिनेटर कैसे उत्पन्न होता है। cs.stackexchange.com/questions/104/… ब्याज की हो सकती है।
गिल्स एसओ- बुराई को रोकना '

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

जवाबों:



6

आप इस उपयोगी पर हमारे हाल के कुछ कागजात पा सकते हैं , क्योंकि हम लैम्ब्डा-एनकोडेड डेटाैटिप के लिए एलिमिनेटर को प्राप्त करते हैं। उदाहरण के लिए, यह देख एक eliminators के जेनेरिक व्युत्पत्ति के लिए, और इस एक बुनियादी तकनीक के लिए सिर्फ नेट प्रकार के लिए लागू किया।

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