यह टाइपकास्ट नहीं करता है क्योंकि वर्ग Adjunctionकेवल सहायक के एक छोटे उपसमूह का प्रतिनिधित्व करता है, जहां दोनों फंक्शंस हास्क पर एंडोफुन्क्टर हैं ।
जैसा कि यह पता चला है, यह आसन्न के लिए मामला नहीं है (<-:) r -| (<-:) r। यहाँ दो अलग अलग प्रकार के फंक्शंस हैं:
f = (<-:) rHask से Op (Hask) के लिए फ़न्क्टर (Hask के विपरीत श्रेणी, कभी-कभी Hask सेशन भी निरूपित)
g = (<-:) rअंतिम संस्कार Op (Hask) से Hask तक
विशेष रूप से, counitOp (Hask) श्रेणी में एक प्राकृतिक परिवर्तन होना चाहिए, जो चारों ओर तीर चलाता है:
unit :: a -> g (f a)
counit :: f (g a) <-: a
वास्तव में, इस आसन्न के counitसाथ मेल खाता है unit।
इसे ठीक से पकड़ने के लिए, हमें Functorऔर Adjunctionवर्गों को सामान्य बनाने की आवश्यकता है ताकि हम विभिन्न श्रेणियों के बीच के बदलावों को मॉडल कर सकें:
class Exofunctor c d f where
exomap :: c a b -> d (f a) (f b)
class
(Exofunctor d c f, Exofunctor c d g) =>
Adjunction
(c :: k -> k -> Type)
(d :: h -> h -> Type)
(f :: h -> k)
(g :: k -> h) where
unit :: d a (g (f a))
counit :: c (f (g a)) a
फिर हम फिर से मिलते हैं कि Composeएक सन्यासी है (और यदि हम आसन्न पलटें तो एक कोमोनड):
newtype Compose f g a = Compose { unCompose :: f (g a) }
adjReturn :: forall c f g a. Adjunction c (->) f g => a -> Compose g f a
adjReturn = Compose . unit @_ @_ @c @(->)
adjJoin :: forall c f g a. Adjunction c (->) f g => Compose g f (Compose g f a) -> Compose g f a
adjJoin = Compose . exomap (counit @_ @_ @c @(->)) . (exomap . exomap @(->) @c) unCompose . unCompose
और Contइसका केवल एक विशेष मामला है:
type Cont r = Compose ((<-:) r) ((<-:) r)
अधिक जानकारी के लिए यह भी देखें: https://gist.github.com/Lysxia/beb6f9df9777bbf56fe5b42de04e6c64
मैंने पढ़ा है कि एक जोड़ी विशेषण दिए गए हैं, वे एक अद्वितीय मोनाड और कोमोनड बनाते हैं, लेकिन एक मोनाड दिया गया जिसे कई कारकों में वर्गीकृत किया जा सकता है। क्या इसका कोई उदाहरण है?
आमतौर पर गुणनखंड अद्वितीय नहीं है। एक बार जब आपने ऊपर के अनुसार adjunctions को सामान्य कर लिया है, तो आप किसी भी Mमोनाड को उसके क्लेइस्ली श्रेणी और उसके बेस श्रेणी (इस मामले में, Hask) के बीच के संयोजन के रूप में कम से कम कर सकते हैं ।
Every monad M defines an adjunction
F -| G
where
F : (->) -> Kleisli M
: Type -> Type -- Types are the objects of both categories (->) and Kleisli m.
-- The left adjoint F maps each object to itself.
: (a -> b) -> (a -> M b) -- The morphism mapping uses return.
G : Kleisli M -> (->)
: Type -> Type -- The right adjoint G maps each object a to m a
: (a -> M b) -> (M a -> M b) -- This is (=<<)
मुझे नहीं पता है कि निरंतरता के लिए हाड पर एंडोफुन्क्टरों के बीच एक संयोजन से मेल खाता है या नहीं।
Nadatabab लेख को भिक्षुओं पर भी देखें: https://ncatlab.org/nlab/show/monad#RelationToAdjunctionsAndMonadicity
सहायक और अद्वैतवाद का संबंध
हर adjunction (L) R) एक मोनड R andL और एक कॉमनॉड LRR को प्रेरित करता है। एक से अधिक स्थापन सामान्य तौर पर होते हैं, जो किसी दिए गए संन्यासी को जन्म देता है, वास्तव में किसी दिए गए संन्यासी के लिए आसन्न की एक श्रेणी है। उस श्रेणी में प्रारंभिक वस्तु मोनाड के क्लेसीली श्रेणी के ऊपर है और टर्मिनल वस्तु एल्जेब्रास के इलेनबर्ग-मूर श्रेणी के ऊपर है। (उदाहरण के तौर पर बोरसेक्स, खंड 2, सहारा। 4.2.2) उत्तरार्द्ध को मौद्रिक स्थापन कहा जाता है।