क्या गणना अभिव्यक्ति मोनाड के समान है?


22

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

यह सब लिखने के बाद, यहाँ मेरा प्रश्न (वास्तव में दो प्रश्न) हैं:

क्या हर एफ # गणना अभिव्यक्ति एक सन्यासी है? क्या हर संन्यासी को F # गणना अभिव्यक्ति के साथ व्यक्त किया जा सकता है?

मैंने टॉमस पेट्रिसक की इस पोस्ट को पढ़ा है और अगर मैं इसे अच्छी तरह से समझता हूं, तो यह बताता है कि गणना की अभिव्यक्तियाँ मोनाड्स से अधिक हैं, लेकिन मुझे यकीन नहीं है कि मैं इसकी सही व्याख्या करता हूं।


@ राफेल मैं पूछ सकता हूं कि लैंग टैग को हटाने का क्या कारण है?
ग्रेज़गोरज़ सोलावेकी

2
चूंकि हम अवधारणाओं के बारे में परवाह करते हैं, इसलिए हम यहां ज्यादातर चीजें भाषा-अज्ञेय रखने की कोशिश करते हैं। मुझे नहीं पता कि प्रश्न से F # क्या हटाया जा रहा है ( मुझे लगता है कि अगर यह महत्वपूर्ण है कि यह F # है तो प्रश्न यहाँ ऑफटॉपिक है, लेकिन यह एक सीमावर्ती मामला है) इसलिए मैं केवल F # टैग को हटाता हूं। अंगूठे का नियम: एफ # एक सीएस अवधारणा नहीं है, इसलिए इसे एक टैग की आवश्यकता नहीं है। (हाँ, मैं अन्य पी एल टैग के बारे में पता कर रहा हूँ और मैं उनकी तरह या तो नहीं है कुछ प्रश्नों के लिए, समुदाय का फैसला किया है कि वे इन टैग वारंट।।)
राफेल

1
@ राफेल मेरा मानना ​​है कि प्रश्न वास्तव में एक सीमावर्ती मामला है। किसी ने इसे यहां स्थानांतरित करने का फैसला किया, लेकिन ऐसा लगता है कि यह यहां के विषय से थोड़ा हटकर है। प्रश्न स्वयं कंप्यूटर की तरह है, लेकिन एक ही समय में उत्तर और प्रश्न दोनों विशेष रूप से f # से संबंधित हैं। मैं आपके अंगूठे के नियम को समझता हूं, स्पष्टीकरण के लिए धन्यवाद।
ग्रेज़गोरज़ सोलावेकी

जवाबों:


22

सबसे पहले, अभिकलन भाव एक भाषा विशेषता है, जबकि भिक्षु गणितीय सार हैं, इसलिए इस दृष्टिकोण से, वे पूरी तरह से अलग चीजें हैं

लेकिन यह बहुत उपयोगी उत्तर नहीं होगा :-)। अभिकलन अभिव्यक्तियाँ एक भाषा विशेषता है जो आपको एक वाक्यविन्यास देती है जिसका उपयोग कम्प्यूटेशन (या डेटा प्रकार) के साथ प्रोग्रामिंग के लिए किया जा सकता है जिसमें मोनडिक संरचना होती है, लेकिन उनका उपयोग अन्य संरचनाओं के साथ भी किया जा सकता है। आप अधिक जानकारी के लिए मेरे F # कम्प्यूटेशन एक्सप्रेशन zoo पेपर पढ़ सकते हैं , लेकिन कम्प्यूटेशन एक्सप्रेशन का उपयोग इसके साथ किया जा सकता है:

  • मोनाड्स, लेकिन यह भी additive मोनाड्स (जिसे हास्केलर कहते हैं MonadPlusया MonadOr)
  • संगणित संगणना (जिसे हास्केलर मोनड ट्रांसफार्मर कहते हैं)
  • अभिकलन जो कि विवादास्पद हैं, लेकिन अपवाद हैंडलिंग जैसे अन्य F # निर्माणों का समर्थन करते हैं
  • मोनॉयड्स (और बिना मोनडिक बाँध के कुछ भिन्नताएँ)
  • आवेदक फंक्शंस (हालांकि यह केवल एक शोध विस्तार में लागू किया गया है)

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


3
मोनाड ट्रांसफॉर्मर एक मोनड को दूसरे मॉनड में बदलने का एक सामान्य तरीका है - एफ # कम्प्यूटेशन एक्सप्रेशंस केवल ट्रांसफॉर्मेशन के बजाय सीधे / ट्रांसफॉर्मेशन को लागू करने का समर्थन करते हैं।
जीएस -

1
@ गणेशमित्तलम - हाँ, आप सही हैं। सरलीकृत करने का मेरा प्रयास यह सब उपयोगी नहीं था :-)। अभिकलन अभिव्यक्तियाँ आपको एक संगणना के साथ काम करने के लिए एक सिंटैक्स दे सकती हैं जो कि एक मोनड ट्रांसफ़ॉर्मर को लागू करने का परिणाम है (अंतर्निहित
मोनाड के

5

आप मोनाड्स व्यक्त करने के लिए अभिकलन अभिव्यक्ति का उपयोग कर सकते हैं। यहाँ एक उदाहरण है । इसके अलावा, जैसा कि आपने उल्लेख किया है, आप सिर्फ एक साधु की तुलना में बहुत अधिक के लिए अभिकलन अभिव्यक्ति का उपयोग कर सकते हैं। उनके बारे में एक विस्तृत विवरण है कि वे यहां कैसे भिन्न हैं । अंतर को ठीक से समझाने के लिए यहां जगह नहीं है, लेकिन अभिकलन अभिव्यक्तियाँ मोनड्स से अलग हैं, जिसमें वे सामान्य एफ # वाक्यविन्यास का पुन: उपयोग करते हैं और अतिरिक्त सार जोड़ने की क्षमता रखते हैं। एक सीमा यह है कि इसकी गैर-मुहावरेदार (और मुश्किल) एक संगणना अभिव्यक्ति लिखने के लिए जो कि संगणना के प्रकार पर बहुरूपी है।


1
कृपया अपने उत्तर को और अधिक आत्म-निहित करें, कम से कम उन पन्नों पर सामग्री का सारांश दें जिनसे आप लिंक करते हैं। यदि आपके दो लिंक काम करना बंद कर देते हैं तो आपका वर्तमान उत्तर पूरी तरह से व्यर्थ हो जाएगा।
डेविड रिचेर्बी

2
मुझे यकीन नहीं है कि आप किस बारे में बात कर रहे हैं। मैंने स्पष्ट रूप से सवालों के जवाब दिए और फिर अधिक जानकारी के लिए लिंक दिए, अगर पूछने वाले की दिलचस्पी है। प्रश्न का उत्तर देने के लिए लिंक की आवश्यकता नहीं है।
N_A

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