বাম এবং ডান অ্যাডজিন্টগুলিতে কীভাবে ধারাবাহিকতা মনডকে ফ্যাক্টরাইজ করবেন?


11

যেমন রাজ্য মনাদকে পণ্য (বাম - ফান্টেক্টর) এবং পাঠক (ডান - প্রতিনিধিত্বযোগ্য) হিসাবে চিহ্নিত করা যায়।

  1. কন্টিনিয়েনশন মোনাডকে ফ্যাক্ট্রি করার কোনও উপায় আছে? কোডের নীচে আমার চেষ্টা, যা চেক পছন্দ করে না
-- To form a -> (a -> k) -> k
{-# LANGUAGE MultiParamTypeClasses, TypeOperators, InstanceSigs, TypeSynonymInstances #-}
type (<-:) o i = i -> o
-- I Dont think we can have Functor & Representable for this type synonym

class Isomorphism a b where
   from :: a -> b
   to :: b -> a

instance Adjunction ((<-:) e) ((<-:) e) where
   unit :: a -> (a -> e) -> e
   unit a handler = handler a

   counit :: (a -> e) -> e -> a
   counit f e = undefined -- If we have a constraint on Isomorphism a e then we can implement this
  1. বাম ও অধিকার সমন্বয়গুলির তালিকা রয়েছে যা স্নাদ তৈরি করে?

  2. আমি পড়েছি, একটি জুড়ি দেওয়া, তারা একটি অনন্য Monad & Comonad গঠন কিন্তু একটি Monad দেওয়া, এটি একাধিক উপাদান ফ্যাক্টরাইজ করা যেতে পারে। এর কোন উদাহরণ আছে কি?

উত্তর:


11

এটি টাইপচেক করে না কারণ শ্রেণিটি 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 আর) একটি মোনাড আরএল এবং একটি কমোনাদ এলওআরকে প্ররোচিত করে। সাধারণভাবে একাধিক সংযোজন ঘটে যা প্রদত্ত মনাদকে এইভাবে উত্থান দেয়, প্রকৃতপক্ষে প্রদত্ত মোনাডের জন্য এক শ্রেণির অ্যাডজেকশন রয়েছে। সেই বিভাগের প্রাথমিক অবজেক্টটি হ'ল মোনাডের ক্লাইসলি বিভাগের উপর সংযোজন এবং টার্মিনাল অবজেক্টটি বীজগণিতগুলির আইলেনবার্গ-মুর বিভাগের ওপরে। (যেমন, ব্রোরাক্স, খণ্ড, ২, প্রো। ৪.২.২) পরেরটিটিকে মোনাডিক অ্যাজজেশন বলা হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.