2016-06-06 14 views
5

मैकलेन, अवोडी और स्पाइवक किताबों के आधार पर श्रेणी सिद्धांत का अध्ययन करने के बाद, मैं हास्केल में मुफ्त/परिचालन मोनड को समझने की कोशिश कर रहा हूं।हास्केल

हम Control.Monad.Free का उपयोग करके Data.Functor.Coyoneda के साथ एक मज़ेदार में बदलने के बाद केवल डेटा प्रकार से एक मोनड प्राप्त कर सकते हैं, जो योनना लेम्मा नामक गणितीय पृष्ठभूमि पर आधारित है।

लेकिन मैं पूरी तरह से समझ नहीं पा रहा हूं कि योनि लेम्मा पर भरोसा करने के बजाय जीएचसी में प्राप्त करने वाले फंक्चर एक्सटेंशन द्वारा मज़ेदार स्वचालित रूप से उत्पन्न किया जा सकता है।

Data.Functor.Coyoneda की तुलना में जीएचसी में व्युत्पन्न मज़ेदार का उपयोग करने के लिए कोई प्रतिबंध है?

+0

शायद आपको [यह ब्लॉग पोस्ट] मिलेगा (https://oleksandrmanzyuk.wordpress.com/2013/01/18/co-yoneda-lemma/) सहायक – Carsten

उत्तर

8

अच्छा सवाल!

Coyoneda और DeriveFunctor अलग-अलग चीजें करें। Coyoneda एक नया, अलग डेटाटाइप बनाता है जो तर्क के किसी भी विकल्प के लिए Functor होता है। DeriveFunctor बस उन प्रकार के लिए बॉयलरप्लेट कोड जेनरेट करता है जो फ़ैक्टर स्वयं ही हैं। आप केवल Functor उदाहरण प्राप्त कर सकते हैं जिनके लिए आप हाथ से ऐसा उदाहरण लिख सकते हैं।

एक (कुछ काल्पनिक) उदाहरण के रूप में newtype Pred a = Pred (a -> Bool) लें: कोई instance Functor Pred क्योंकि Pred अपने a पैरामीटर में contravariant है, इसलिए DeriveFunctor तुम्हारी मदद करने में सक्षम नहीं होगा। दूसरी तरफ Coyoneda Pred एक Functor है क्योंकि Coyoneda fFunctor है, हालांकि f के लिए कोई भी उपयोगी नहीं है।

एक तरफ के रूप में, Freer monadFree से Coyoneda के अनुप्रयोग के रूप में उभरा।

+0

क्या 'कोयोनाना प्रीड' लगभग आइसोमोर्फिक या कुछ अर्थों के बराबर है 'कॉन्स्ट()' करने के लिए? आप उनमें से किसी भी जानकारी से निकालने में सक्षम नहीं होना चाहिए ... – chi

+1

@chi हाँ, मुझे ऐसा लगता है। आप 'शून्य' को अस्तित्व में रूप से मात्राबद्ध 'बी' प्रकार के रूप में चुनकर' कोयोनोना प्रीड 'का निर्माण कर सकते हैं:' कोयोनोना बेतुका absurd :: forall a। कोयोनाना प्राइड ए'। फिर यह आइसोमोर्फिज्म के दोनों दिशाओं को बनाने के लिए तुच्छ होना चाहिए। –

+0

@ बेंजामिन होडसन अगर 'डेलीवफंक्टर' का उपयोग 'स्टैंडअलोन डीरविंग' के साथ करते हैं, तो एक सामान्य डेटाटाइप 'कोयोनिया' की शक्ति से लाभान्वित किए बिना एक मजेदार बनने में सक्षम प्रतीत होता है, है ना? मुझे फ्रीर मोनाड का नाम पता है लेकिन अभी तक पूरी तरह से समझ में नहीं आता है। – sato