এটি টাইপচেক করে না কারণ শ্রেণিটি Adjunction
কেবলমাত্র সংক্ষিপ্তসারগুলির একটি ছোট উপসেট উপস্থাপন করে, যেখানে উভয় ফান্ট্যাকারই হ্যাস্কের এন্ডফান্টেক্টর ।
যেমনটি দেখা যাচ্ছে, এটি অ্যাডজেকশনটির ক্ষেত্রে নয় (<-:) r -| (<-:) r
। এখানে দুটি সূক্ষ্মভাবে বিভিন্ন ফান্টেক্টর রয়েছে:
f = (<-:) r
, হাস্ক থেকে অপেপ (হাস্ক) এর ফান্টেক্টর (হাসকের বিপরীত বিভাগ, কখনও কখনও হাস্ক-ওপিকেও চিহ্নিত করা হয়)
g = (<-:) r
, ওপ (হাস্ক) থেকে হাস্ক পর্যন্ত ফান্টেক্টর
বিশেষত, counit
ওপ (হাস্ক) বিভাগে প্রাকৃতিক রূপান্তর হওয়া উচিত, যা চারদিকে তীরগুলি সরিয়ে দেয়:
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
আমি পড়েছি যে এক জোড়া সংখ্যক দিকনির্দেশনা দিয়ে তারা একটি অনন্য মোনাড ও কমোনাদ গঠন করে তবে একটি মোনাড দেওয়া হয়েছে এটি একাধিক উপাদানগুলিতে ফ্যাক্টরাইজড হতে পারে। এর কোন উদাহরণ আছে কি?
অনুষঙ্গটি সাধারণত অনন্য নয়। একবার আপনি উপরের মতো অ্যাজন্যাকশনগুলি সাধারণীকরণ করার পরে, আপনি কমপক্ষে কোনও মোনাদকে M
তার ক্লাইসলি বিভাগ এবং এর বেস বিভাগ (এই ক্ষেত্রে, হাস্ক) এর মধ্যে সংযোগ হিসাবে ফ্যাক্টর করতে পারেন ।
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 (=<<)
আমি জানি না যে এই ধারাবাহিকতা মনডটি হাস্কের এন্ডোফান্টেক্টরের মধ্যে সংযুক্তির সাথে মিলে যায় কিনা।
মোনাডে এনটিজিএলএব নিবন্ধটিও দেখুন: https://ncatlab.org/nlab/show/monad# রিলেশনটিও অ্যাডজাকশনসএন্ড মোনাদিসিটি
সংস্থান এবং একাকীত্ব সম্পর্কিত
প্রতিটি সমন্বয় (এল L আর) একটি মোনাড আরএল এবং একটি কমোনাদ এলওআরকে প্ররোচিত করে। সাধারণভাবে একাধিক সংযোজন ঘটে যা প্রদত্ত মনাদকে এইভাবে উত্থান দেয়, প্রকৃতপক্ষে প্রদত্ত মোনাডের জন্য এক শ্রেণির অ্যাডজেকশন রয়েছে। সেই বিভাগের প্রাথমিক অবজেক্টটি হ'ল মোনাডের ক্লাইসলি বিভাগের উপর সংযোজন এবং টার্মিনাল অবজেক্টটি বীজগণিতগুলির আইলেনবার্গ-মুর বিভাগের ওপরে। (যেমন, ব্রোরাক্স, খণ্ড, ২, প্রো। ৪.২.২) পরেরটিটিকে মোনাডিক অ্যাজজেশন বলা হয়।