यूनिवर्सल / अस्तित्व मात्रा का ठहराव?


11

मैं प्रकार के सार्वभौमिक और अस्तित्वगत मात्राकरण के उद्देश्य को समझने के लिए संघर्ष कर रहा हूं। मैं निर्माणों की गणना के आधार पर एक खिलौना भाषा लिखने के साथ खेल रहा हूं । मैं मोर्टे और हेंक के बारे में पढ़ रहा हूं ताकि मुझे बेहतर समझ मिल सके।

मुझे समझ में नहीं आता है कि सीओसी के पास लंबोदर और फोर्ल एब्स्ट्रैक्शन दोनों क्यों हैं।

( एक्स : एक बी )

(λx:A.B)
(x:A.B)

यह मुझे लगता है कि लैंबडा एक सिस्टम में फॉर्म्स को सब्सक्राइब करता है, जहां टाइप मैन्युअल रूप से पास किए जाते हैं। दूसरे शब्दों में, कि निम्नलिखित

(x:.λa:x.a)

से बदला जा सकता है

(λx:.λa:x.a)

यदि यह पहली बार उपयोग किए जा रहे प्रकार पर लागू किया गया था।

मैं क्या खो रहा हूँ? क्या कागजात या ब्लॉग या लेख पढ़ने के लिए हैं जो मेरी मदद कर सकते हैं?

धन्यवाद।

जवाबों:


12

यह याद रखना महत्वपूर्ण है कि मदद करता है (या के रूप में आप कभी कभी देखें) एक प्रकार है। यह सामान्य । इसलिए जब यह कहने के लिए सही समझ में आता है , तो यह कहने का कोई मतलब नहीं है क्योंकि सिर्फ एक प्रकार है। आप यह नहीं कहेंगे कि becaues _ प्रति-कंप्यूटिंग के लिए नहीं है, यह लैम्ब्डा शब्दों को वर्गीकृत करने के लिए है जो इस तरह से लागू किया जा सकता हैΠ(λx:A.M) N(x:A.M) N...(AB) N

यह कुछ ऐसा था जिसने मुझे और भी उलझा दिया, लेकिन यह है कि निर्माणों की गणना (साथ ही साथ किसी अन्य निर्भर प्रकार से परिभाषित प्रणाली)।

आपके द्वारा लिखे गए दो कार्यक्रमों में बहुत अलग इरादे हैं और पहले वाले को टाइप किया गया है। यह कहने का कोई मतलब नहीं है कि क्योंकि को इसके दोनों प्रकार के तर्क आवश्यकता होती है, जिसका अर्थ है कि if अच्छी तरह से टाइप किया जाना चाहिए, हमें है । हालाँकि, एक प्रकार नहीं है, इसे कभी भी एक प्रकार का फॉर्म सौंपा जा सकता है , never । दूसरी ओर एक दूसरे के लगभग (मुझे लगता है कि तुम वापस करने के लिए होती है नहीं ) एक समारोह है और एक प्रकार का उपयोग कर दो दिया जाता है रों।x:A. λx. xx:A.BB:λx.xx:A.Bax


हाँ, मैं वापस जाने के लिए मतलबa
ओकोनोरो ०६

@ oconnor0 क्या कुछ समझ में आता है :)
डैनियल ग्रैज़र

बिल्कुल नहीं। मैं अभी भी थोड़ा उलझन में हूं। मुझे इसके बारे में अधिक सोचना पड़ सकता है। मैं दोनों उदाहरण कार्यक्रमों बदल वापस जाने के लिए के बजाय एक्स के बाद से मैं लागू करने के लिए कोशिश कर रहा था मैं d । :)axid
ओकोनोरो ०६

मुझे लगता है, किसी स्तर पर, मैं एक ही चीज़ के लिए शब्द और प्रकार बनाना चाहता था। आपके उत्तर और cs.stackexchange.com/questions/49531/… के बीच मुझे लगता है कि मैं देख रहा हूँ कि मैं कहाँ गया था। मैं इसे सामान्य रूप से सामान्य करने की प्रणाली में करना चाहता हूं।
ओशनोरो0

5

ध्यान रखें कि अस्तित्वगत और सार्वभौमिक प्रकार अलग-अलग होते हैं। यह रचनात्मक तर्क, नहीं शास्त्रीय तर्क है और रचनात्मक तर्क में और के रूप में संबंधित नहीं हैं के रूप में वे शास्त्रीय तर्क में हैं।

प्रकार के प्रोग्राम हैं जो टाइप की वस्तु प्राप्त करते हैंऔर टाइप बी ( एक्स ) का ऑब्जेक्ट लौटाते हैं। यहां महत्वपूर्ण बात यह है कि टाइप बी ( एक्स ) एक्स परनिर्भर करताहैऔर सभी एक्स के लिए समान नहीं है। यह एक्स के आधार पर अलग-अलग हो सकताहै। एक इनपुट x के लिए हम एक पूर्णांक आउटपुट कर सकते हैं। दूसरे के लिए हम एक वास्तविक संख्या का उत्पादन कर सकते हैं। अभी तक एक और के लिए हम वास्तविक संख्या पर एक समारोह उत्पादन कर सकते हैं। यदि B ( x )x:A.B(x)AB(x)B(x) xxxxB(x) साथ भिन्न नहीं होता है तो आप A B का उपयोग कर सकते हैं जो A से B तक के प्रकार हैं ।xABAB

) डिस्जैक्शन (निर्भर ) कानिर्भरसंस्करण है। आप रचनात्मक अलगाव के बारे में सोच सकते हैं एक बी दो प्रकार के एक और बी के संबंध तोड़ना संघ के रूप में एक और बीएक्स : एक बी ( एक्स ) एक्स : द्वारा अनुक्रमित बी ( एक्स ) के प्रकारों के संग्रह का असम्बद्ध संघ है। तथ्य यह है कि प्रकार बी (x:A.B(x)ABABABx:A.B(x)B(x)x:A वैन के मूल्य के आधार पर बदलती एक्स : एक यह एक आश्रित प्रकार बनाता है। मामले के साथ तुलना करें जहां बी पर निर्भर नहीं करता एक्स : एक :एक्स : एक बी । हमप्रत्येक एक्स के लिए एकही बी की एक प्रति ले रहे हैं : । यह× बी के लिए आइसोमोर्फिक है।B(x)x:ABx:Ax:A.BBx:AA×B

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

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


1
क्या करता है "doesx: AB (x) ABx: AB (x) (रचनात्मक) विघटन का निर्भर संस्करण है।" क्या मतलब है?
ओशनोरो 0
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.