क्या एलिमेंट्री एफिन लॉजिक को व्यावहारिक प्रोग्रामिंग लैंग्वेज के कोर टाइप सिस्टम के रूप में इस्तेमाल किया जा सकता है?


9

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

मेरा सवाल यह है कि ईएएल को अंतर्निहित प्रकार की प्रणाली के रूप में उपयोग करके कोई व्यावहारिक प्रोग्रामिंग भाषा कैसे बना सकता है? यानी, किस प्रकार के एक्सटेंशन (फिक्स-पॉइंट्स, बहुरूपता, आश्रित प्रकार, डेटाटिप्स इत्यादि) को उस विशेषता को प्रभावित किए बिना कोर टाइप सिस्टम में बनाया जा सकता है, और क्या ऐसी भाषा व्यवहार में उपयोग करने योग्य होगी, या यह किसी भी तरह से भी उपयोगी होगी। उन कारणों के लिए प्रतिबंधात्मक जो मुझे ज्ञात नहीं हैं?


"एलिमेंटरी अफाइन लॉजिक एक प्रकार की प्रणाली है जो λ-terms के वर्ग को पकड़ती है जिसे प्रारंभिक समय में कम किया जा सकता है": यह अभेद्य है। EAL प्राथमिक कार्यों (wrt चर्च एन्कोडिंग) का प्रतिनिधित्व करने वाले -terms के एक सख्त सबसेट को कैप्चर करता है । यह सच है कि सभी प्राथमिक कार्यों कवर कर रहे हैं: प्रत्येक प्राथमिक समारोह के लिए , वहाँ कम से कम एक EAL अवधि की गणना है , लेकिन वहाँ आमतौर पर कंप्यूटिंग प्राथमिक एल्गोरिदम करने के लिए इसी अन्य शब्दों की टन कर रहे हैं जो EAL में नहीं हैं। λffच
— डैमियानो मजाज़

वाह, सही है। इसके अलावा, जहां तक ​​मैं समझता हूं, ऐसे शब्द भी हैं जिन्हें अमूर्त एल्गोरिदम के साथ कम किया जा सकता है, लेकिन ईएएल प्रकार नहीं है, है ना? इसलिए, जबकि सभी ईएएल शब्दों को ओरेकल के बिना कम किया जा सकता है, फिर भी अमूर्त एल्गोरिथ्म और ईएएल के बीच कुछ बेमेल है। @DamianoMazza
— MaiaVictor

हाँ, यह सही है।
— डेमियानो मजाज़

1
"वैसे भी, कोई भी आपको कोशिश करने और देखने के लिए मना नहीं करता है कि आपको क्या मिल सकता है!" - 3 साल बाद: हाँ, किसी ने मुझे मना नहीं किया, इसलिए मैंने ऐसा किया! docs.formality-lang.org । आपकी सभी मदद के लिए धन्यवाद :)
— MaiaVictor

जवाबों:


10

कुछ ऐसा ही है, लेकिन ईएएल के बजाय लाइट एफाइन लॉजिक (एलएएल) का उपयोग करते हुए, कुछ साल पहले बैलट, गैबॉर्डी और मोगबिल (आप यहां कागज पा सकते हैं ) का प्रयास किया गया था । मुझे लगता है कि ईएएल के लिए उनके काम को आसानी से सामान्यीकृत किया जा सकता है, जो एक अधिक उदार प्रणाली है।

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

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

एक उदाहरण: कुछ "चर्च पूर्णांक हैकिंग" के साथ, ईएएल में परिभाषित करना संभव है घखएल:एनएटी→एनएटी ऐसा है कि घखएल n_=2n_ पुनरावृत्ति का उपयोग किए बिना । फिर, आप पुनरावृति कर सकते हैंघखएल घातीय कार्य को परिभाषित करने के लिए इएक्सपीजो, हालांकि, खुद को पुनरावृत्त नहीं किया जा सकता है। तो ईएएल पर आधारित जो भी प्रोग्रामिंग भाषा है, उसे पुनरावृत्ति द्वारा कुछ निश्चित परिभाषाओं को मना करने के लिए किसी प्रकार के तंत्र की आवश्यकता होगी; यह कल्पना करना कठिन है कि ऐसे प्रतिबंध का परिणाम उस भाषा में नहीं होगा जो प्रोग्रामर को अजीब लगता है। वैसे भी, कोई भी आपको कोशिश करने और देखने के लिए मना नहीं करता है कि आप क्या प्राप्त कर सकते हैं!

किसी भी मामले में, यदि आप सामान्य रूप से इष्टतम मूल्यांकन, ईएएल और प्रकाश लॉजिक्स के बीच संबंधों में रुचि रखते हैं, तो मेरा सुझाव है कि आप 2000 के दशक के मध्य से जल्दी से कोपोला के कागजात पर एक नज़र डालें ।

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