2009-03-20 19 views
16

निरंतरता monads होने के लिए कहा जा सकता है? वे monads का एक सबसेट है या वे बस monads को लागू करने का एक तरीका है?निरंतरता monads हैं?

संपादित करें: या हो सकता है मैं इसे गलत हो गया और monadsनिरंतरता तुलना में एक अधिक अमूर्त अवधारणा है? (इसलिए मैं वास्तव में यहां संतरे से सेब की तुलना कर रहा हूं)

+1

निरंतरता सब कुछ कर रहे हैं। निरंतरता डेटा संरचनाओं को लागू कर सकती है; निरंतरता कक्षाओं और वस्तुओं को लागू कर सकते हैं; निरंतरता monads लागू कर सकते हैं।मुझे नहीं पता कि इस सवाल को हास्केल के साथ क्या करना है, हालांकि, निरंतरता और मोनैड दोनों को छोड़कर ... – ephemient

+0

मुझे न तो। मैंने पहली जगह हास्केल टैग नहीं जोड़ा और स्पष्ट रूप से मैं एक अलग संदर्भ में एक स्पष्टीकरण में अधिक रुचि रखता हूं। – troelskn

+1

@troelskn: मैं आपके संपादन से सहमत हूं; निरंतरता monads की तुलना में एक अलग जानवर हैं। यह पूछने की तरह थोड़ा है कि क्या लकड़ी के तख्ते एक घर हैं। यदि वे एक साथ रखे तो वे * हो सकते हैं। लेकिन वे कई अन्य चीजें भी हो सकती हैं। –

उत्तर

17

संक्षेप में, चूंकि एक मोनैड के 'बांध' एक तर्क के रूप में एक प्रभावी निरंतरता ('गणना के बाकी' का एक लैम्ब्डा) लेता है, तो उस अर्थ में मोनैड निरंतरताएं होती हैं। फ्लिप पक्ष पर, निरंतर-गुजरने वाली शैली को मोनाडिक सिंटैक्स शर्करा का उपयोग करके गैर-सीपीएस भाषा में प्रभावी ढंग से कार्यान्वित किया जा सकता है, जैसा कि नीचे दिए गए कई विविध लिंक द्वारा सुझाया गया है।

हास्केल में ट्यूटोरियल 'के बारे में monads सब' से

:

https://www.haskell.org/haskellwiki/All_About_Monads#The_Continuation_monad

एक एफ # निरंतरता इकाई, 'ब्रेक' लागू करने के लिए और 'जारी रखें' के लिए शैली-लूप के लिए

http://cs.hubfs.net/forums/thread/9311.aspx इस्तेमाल किया

और एफ # में एक समस्या के एक निरंतरता इकाई को लागू करने के उदाहरण:

http://lorgonblog.spaces.live.com/blog/cns!701679AD17B6D310!256.entry

6

वे हो सकते हैं, हालांकि उन्हें होने की आवश्यकता नहीं है। मैं आपके सवाल का एक छोटा सा रिवर्स और कहते हैं बजाय कि monads निरंतरता को लागू करने का एक तरीका है चाहते हैं। लेकिन आप कई मायनों में निरंतरता लागू कर सकते हैं - आप, for example भी बहुत प्रयास के बिना सी # में सीपीएस का एक मामूली लेकिन विवश प्रतिकृति कर सकते हैं। एक बहुत ही अच्छे इलाज के लिए हास्केल साइट से The Continuation Monad पर एक नज़र डालें।

+0

मुझे थोड़ा उत्साहित हो गया, लेकिन यह सी # में सीपीएस नहीं है। यह एक उपयोगिता फ़ंक्शन है जो एक फ़ंक्शन लेता है और कॉलर को उस फ़ंक्शन द्वारा लौटाए गए मान को वापस देता है। सीपीएस के साथ कुछ नहीं करना। –

+0

ओह, गलत लिंक। फिक्स्ड। जैसा कि ध्यान दिया गया है, यह केवल सीपीएस के लिए अनुमान है, असली सीपीएस नहीं (मुझे नहीं लगता कि यह सी # में संभव है, लेकिन मुझे इसके बारे में थोड़ा और सोचना होगा)। –

22

न केवल निरंतर मोनैड हैं, लेकिन वे एक सार्वभौमिक मोनैड हैं, इस अर्थ में कि यदि आपके पास निरंतरता और स्थिति है, तो आप किसी भी कार्यात्मक मोनड का अनुकरण कर सकते हैं। यह प्रभावशाली लेकिन उच्च तकनीकी परिणाम Andrzej Filinski के प्रभावशाली और उच्च तकनीकी मन, जो 1994 या आस में लिखा है से आता है:

हम बताते हैं कि किसी भी इकाई जिसका इकाई और विस्तार के संचालन में व्यक्त कर रहे हैं के रूप में पूरी तरह कार्यात्मक संदर्भ में एम्बेड किया जा सकता "composable निरंतरता" के साथ एक कॉल-दर-मूल्य भाषा।

+0

मैं सहमत हूं कि परिणाम प्रभावशाली है। मुझे अंडरस्कोर करने दें हालांकि यह एम्बेडिंग "सीमांकित" (या फिलिंस्की कहते हैं "composable") निरंतरता वाली भाषा में है। योजना में कॉल/सीसी से आपको जारी किए गए निरंतरता मूल्यों की तुलना में ये सख्ती से अधिक शक्तिशाली हैं। – dubiousjim

+2

@profjim: असल में, फिलिंस्की ने यह भी दिखाया कि साधारण निरंतरता और राज्य का उपयोग करके सीमित निरंतरता को कैसे कार्यान्वित किया जाए। उन्होंने कॉलक का उपयोग कर एसएमएल/एनजे में पूरी चीज को लागू किया। सिग्फ़े के ब्लॉग का हवाला देते हुए – RD1

4

उस विषय पर एक बहुत अच्छा लेख: http://blog.sigfpe.com/2008/12/mother-of-all-monads.html

+2

+1। उत्कृष्टता का एक सुंदर खजाना ट्रोव क्या है। लेखक एक विस्तृत, प्रबुद्ध, फिर भी पृथ्वी के रास्ते में श्रेणी सिद्धांत और अन्य दूर-दूर अवधारणाओं को समझाने का प्रबंधन करता है। सबसे बुद्धिमान लोग, मेरी पुस्तक में, सर्वश्रेष्ठ शिक्षक हैं। –

1

एक निरंतरता एक कार्यक्रम में एक विशेष समारोह है। मोनाड टाइप कंस्ट्रक्टर हैं।

प्रकार T लेने एक इकाई नहीं होगा निरंतरता के लिए एक प्रकार निर्माता Cont<T>

हालांकि, Cont<Cont<T>> एक मोनड है, और यही आमतौर पर "निरंतरता मोनाड" कहा जाता है।

(एक भाषा में होने callcc Cont<Cont<T>> से T कन्वर्ट करने के लिए सक्षम होने के बराबर है।)

संबंधित मुद्दे