পাঠক, লেখক মনদেহ


17

কে সিসিসি করা যাক । আসুন তে একটি পণ্য দ্বিখণ্ডক হয়ে উঠুন । বিড়ালটি সিসিসি হিসাবে , আমরা তরকারী করতে পারি :( × ) সি ( × )C(×)C(×)

curry(×):C(CC)

curry(×)A=λB.A×B

ফ্যান্টেক্টর বিভাগ সাধারণ কাঠামো থাকে। CC একটি monoid একটি একসংখ্যা হয় । CCC আমরা সসীম পণ্যগুলিকে তে একঘেয়েমি কাঠামো হিসাবে বিবেচনা করি ।C

curry(×)1id

A B.curry(×)(A×B)(curry(×)A)(curry(×)B)

অতএব (curry(×)) মনোয়েডাল কাঠামো সংরক্ষণ করে, সুতরাং এটি একটি মনয়েডকে একটি মনোয়েড এবং কমোনয়েডে কমোনয়েডে পরিবহণ করে। যেমন, এটা একটি অবাধ monoid transports w থেকে (Writer w) একসংখ্যা (- সংজ্ঞা এ বর্ণন w একটি monoid হতে হবে)। একইভাবে এটি transports তির্যক comonoid করার Coreader comonad।

এখন, সংক্ষিপ্ততার জন্য, আমি লেখকের নির্মাণকাজটি প্রকাশ করেছি।

শুরু করুন। প্রকৃতপক্ষে Writer=Coreader=curry(×) , তাদের সহজভাবে হাস্কেলের আলাদা আলাদা নাম রয়েছে। আমাদের কাছে হাস্কেল w,mappend,mempty :

mappend:w×ww

mempty:1w

লেখক একটি ফান্টেক্টর, তাই এটি অবশ্যই মরপেন্ডগুলি যেমন ম্যাপেন্ডmappend এবং মেম্পটির মানচিত্র তৈরি করতে পারেmempty । আমি এটি নীচে হিসাবে লিখছি, যদিও এটি হাস্কেলের ক্ষেত্রে অবৈধ:

Writer mappend:Writer(w×w)Writer w

Writer mappend একটি প্রাকৃতিক রূপান্তর, CCকারি (By বার) এর বৈশিষ্ট্য অনুসারে curry(×)এটি একটি ফাংশন যা ওব (সি) এ একটি takes নেয় aOb(C)এবং সি-তে একটি আকার দেয় C:

Writer mappend a=mappend×(id(a)):Writer(w×w)aWriter w a

অনানুষ্ঠানিকভাবে, ধরনের অঙ্কের উপাদান এবং পাম্প অক্ষত। হাস্কেলের লেখকের ঠিক এটিই। একটি প্রতিবন্ধকতা হ'ল মোনাড আমাদের দরকারW একটি ডব্লিউ R আমি টি W , μ , η Writer mappend awaWriter w,μ,η

μ:Writer wWriter wWriter w

অর্থাত্ অসঙ্গতি। তবে এই ফান্টেক্টরগুলি isomorphic: fin সীমাবদ্ধ পণ্যগুলির জন্য সাধারণ সহযোগীর দ্বারা যা প্রাকৃতিক আইসোমরফিজম । তারপরে আমরা মাধ্যমে সংজ্ঞায়িত । আমি মাধ্যমে নির্মাণকে বাদ ।λ a w × ( w × a ) = W r i t e r w W r i t e r w μ W r i t e r m a p p eWriter(w×w)=λa.(w×w)×aλa.w×(w×a)=Writer wWriter wμη m e m p t yWriter mappendηmempty

লেখক, একজন functor হচ্ছে, বিনিময় ডায়াগ্রামে, অর্থাত্ সংরক্ষণ monoid equalities, অপরিবর্তিত, তাই আমরা আছে তাদের জন্য মঞ্জুর প্রমাণিত equalities, জন্য = একটি monoid মধ্যে = একটি একসংখ্যা । শেষ.( সি সি ) সিWriter w,μ,η(CC)C

রিডার এবং কাউটারিটরের কী হবে ? পাঠক কোরেডারকে সমাহিত করেছেন, যেমন কোরেডারের সংজ্ঞায় ব্যাখ্যা করা হয়েছে, উপরের লিঙ্কটি দেখুন। একইভাবে, কৌরাইটার রাইটারকে অ্যাডজাস্ট করে। আমি কাউরিটারের সংজ্ঞা পাইনি, সুতরাং আমি এটিকে টেবিলে দেখানো উপমা দিয়ে তৈরি করেছি:

বিকল্প পাঠ

{- base, Hackage.category-extras -}
import Control.Comonad
import Data.Monoid
data Cowriter w a = Cowriter (w -> a)
instance Functor (Cowriter w) where
    fmap f (Cowriter g) = Cowriter (f . g)
instance Monoid w => Copointed (Cowriter w) where
    extract (Cowriter g) = g mempty
instance Monoid w => Comonad (Cowriter w) where
    duplicate (Cowriter g) = Cowriter
        (\w' -> Cowriter (\w -> g (w `mappend` w')))

নীচে সেগুলি (সহ) মনাদের সহজ সংজ্ঞা দেওয়া আছে। fr_ob F বস্তুগুলিতে একটি ফান্টর এফ এর ম্যাপিংকে বোঝায়, fr_mor F মরফিজমে Fantor F এর ম্যাপিংকে বোঝায়। একটা monoid অবজেক্ট মধ্যে ।সিw,+^,0^C

  • লেখক
    • fr_ob(Writer w)a=a×w
    • fr_mor(Writer w)f=λa0,w2.a0,f w2
    • ηa=λa0.a0,0^
    • μa=λa0,w1,w0.a0,w0+^w1
  • পাঠক
    • fr_ob(Reader r)a=ra
    • fr_mor(Reader r)f=λg r0.f(g r0)
    • ηa=λa0 r0.a0
    • μa=λf r0.f r0 r0
  • Coreader
    • fr_ob(Coreader r)a=r×a
    • fr_mor(Coreader r)f=λr0,a0.f r0,a0
    • ηa=λr0,a0.a0
    • μa=λr0,a0.r0,r0,a0
  • Cowriter
    • fr_ob(Cowriter w)a=wa
    • fr_mor(Cowriter w)f=λg r0.f(g r0)
    • ηa=λf.f 0^
    • μa=λf w1w0.f(w0+^w1)

প্রশ্নটি হ'ল সংযোজন মন্থড নয়, ফান্টেক্টরের সাথে সম্পর্কিত। "পাঠক একটি মনাদ" এবং "লেখক একটি মনাদ" "" সহকর্মী একটি কমোনাদ "" "সংঘর্ষটি" কোরেডার একজন কমোনাদ " সমন্বয়টি কীভাবে বোঝায় তা আমি দেখতে পাচ্ছি না ।C

লক্ষ্য। আমি আরও প্রসঙ্গ সরবরাহ করার জন্য সংগ্রাম করছি। এটি কিছু কাজ প্রয়োজন। বিশেষত, আপনার যদি বিশুদ্ধ বিশুদ্ধতার প্রয়োজন হয় এবং প্রোগ্রামারদের জন্য সেগুলি (কো) মনড চালু করা হয়েছিল। টানতে থাকুন! ;)


অফার: আপনি টেবিলের স্ক্রিনশট নিতে পারেন এবং চিত্রটি এখানে রাখতে পারেন।
এমএস দৌস্তি

আপনার এখানে প্রশ্নটি অনুলিপি করা উচিত।
ডেভ ক্লার্ক

2
ডাউনভোটিং করা লোকদের কেন একটি মন্তব্য পোস্ট করা উচিত।
সুরেশ ভেঙ্কট

1
@Ohad। আমি স্বীকার করি যে প্রশ্নটি আরও প্রসঙ্গের সাথে সরবরাহ করার চেষ্টা করার জন্য আমি সেই পরিবর্তনটি চালু করেছি (যেমনটি মূলত ব্লগ পোস্টটিতে মূলত উল্লেখ করা হয়েছিল) found আমি মনে করি যে বেরোলের আরও বেশি প্রচেষ্টা ব্যয় করা উচিত তাঁর প্রশ্নকে অন্তর্ভুক্ত করার জন্য, উদাহরণস্বরূপ, পাঠক এবং লেখক এবং কোরেডার এবং কৌরাইটার কী স্পষ্টতাল শর্তে বা হাস্কেল বা উভয় ক্ষেত্রে রয়েছে তা নির্ধারণ করে, আমরা সকলেই জানি যা বলা হচ্ছে তা জেনে রাখা।
ডেভ ক্লার্ক

2
@ বেরোয়াল: আমার অর্থ হ'ল, যেহেতু আমি প্রতিদিন ভিত্তিতে হাস্কেলকে ব্যবহার করি না, হাস্কেল কোডটি পার্স করা এবং সিটি-তে রূপান্তর করা আমার পক্ষে, এবং অন্যদের পক্ষেও খুব অল্প কাজ নয়। নিখুঁতভাবে শ্রেণীবদ্ধভাবে প্রশ্নটি পুনরায় চাপিয়ে দেওয়ার মাধ্যমে আপনি উত্তরটি দ্রুত পান সম্ভবত ...
ওহাদ কামার

উত্তর:


13

হ্যাঁ, যদি একটি একসংখ্যা একটি অধিকার adjoint হয়েছে , তারপর স্বয়ংক্রিয়ভাবে একটি comonad গঠন অধিকারী হয়।M:CCNN

এটি বোঝার জন্য সাধারণ বিভাগ-তাত্ত্বিক সেটিংটি নিম্নরূপ। যাক এবং দুটি বিভাগ করা। থেকে পর্যন্ত ফান্টারের ক্যাটেজরির জন্য লিখুন ; এর বস্তুগুলি ফান্টেক্টর এবং এর রূপগুলি প্রাকৃতিক রূপান্তর। লিখন পূর্ণ উপবিষয়শ্রেণীটি জন্য functors যা সঠিক adjoints আছে (অন্য কথায়, আমরা functors বিবেচনা উপর অধিকার adjoints সঙ্গে এবং তাদের মধ্যে নির্বিচারে প্রাকৃতিক রূপান্তর)। একটি ফ্যান্টেক্টর এর ডান সংযোজনের জন্য লিখুন । তারপরCDFun(C,D)CDFunL(C,D)Fun(C,D)CDFR:DCF:CDR:FunL(C,D)Fun(D,C) একটি বিপরীত ফ্যান্টেক্টর: যদি প্রাকৃতিক রূপান্তর হয় তবে সেখানে প্ররোচিত হয় প্রাকৃতিক রূপান্তর ।α:FGαR:GRFR

যদি , তবে এর একটি একক কাঠামো রয়েছে যা রচনা দ্বারা তৈরি করা হয় এবং তাই , কারণ বাম অ্যাডজেক্টগুলির সংমিশ্রণ একটি বাম অ্যাজমেন্ট হয়। বিশেষত, , সুতরাং অ্যান্টিমোনয়েডাল কন্ট্রোভারিয়েন্ট ফান্টেক্টর। যদি আপনি আবেদন করেন the কাঠামোগত প্রাকৃতিক রূপান্তরগুলিতে যা কোনও ফান্টর একটি মোনাদের কাঠামোর সাথে সজ্জিত করে, আপনি যা বের করেন তা কমোনাদ isC=DFun(C,C)FunL(C,D)(FG)R=GRFRRRM


1
এবং একটি উল্লেখ করা উচিত যে এই ফান্টেক্টরগুলির মধ্যে কিছু, উদাহরণস্বরূপ আসলে ফান্টেক্টর নয় বরং ছদ্ম-ফ্যান্টারের মতো কিছু কারণ এটি সাধারণত কেবলমাত্র তাত্ত্বিক আইসোমর্ফিজম পর্যন্ত ফান্টোরালটি সন্তুষ্ট করে। তবুও, মূল পয়েন্টটি বৈধ। R
আন্দ্রেজ বাউর

7

যাইহোক, এটি:

যাক মধ্যে একটি পণ্য bifunctor হতে । সিসিসি হিসাবে , আমরা কারি করতে পারি(×)CC(×)

কিছুটা ভুল একটির জন্য, স্বাভাবিক পরিভাষাটি হবে (যদি আমি ভুল না হয়ে থাকি) যে উপরে বা দ্বিখণ্ডক । "ইন" এর অর্থ সাধারণত কোনও বিভাগের তীর এবং জিনিসগুলি ব্যবহার করে নির্মিত নির্মাণগুলি, তবে ফ্যান্ট্যাক্টররা "অন" বিভাগগুলিতে একাধিক বিভাগ সম্পর্কিত নির্মাণকে বোঝায়। এবং পণ্য দ্বিখণ্ডক কোনও কার্তেসিয়ান বিভাগের মধ্যে কোনও নির্মাণ নয়।×C

আর এই বড় ভ্রম সম্পর্কিত: পণ্য bifunctor তরকারি করার ক্ষমতা কিছুই করার আছে হচ্ছে কার্টিজিয়ান বন্ধ করে দেয়। বরং এটি সম্ভব হয়েছে কারণ , বিভাগগুলির বিভাগ (caveোকান ক্যাভেটস) কার্টেসিয়ান বন্ধ। সুতরাং প্রশ্নে তরকারী দ্বারা প্রদত্ত:CCat

HomCat(C×D,E)HomCat(C,ED)

যেখানে বিভাগগুলির একটি পণ্য এবং হ'ল ফ্যান্টরস । যদিও , এবং কার্টেসিয়ান বন্ধ রয়েছে তা নির্বিশেষে এটি কাজ করে । যখন আমরা , আমরা পাই:C×DEDF:DECDEC=D=E

×:C×CC
curry×:CCC

তবে এটি কেবল একটি বিশেষ ক্ষেত্রে:

F:C×DE
curryF:CED

2 ড্যান দোয়েল: হ্যাঁ, হ্যাঁ, হ্যাঁ, ধন্যবাদ মূল পোস্ট beroal.livejorter.com/23223.html থেকে অনুবাদ করার সময় আমি ভুলটি করেছি
beroal

4

ক্রোড়পত্র বিবেচনা । এমন প্রত্যেকটি ক্রোড়পত্র জন্য আমরা একটি একসংখ্যা আছে জি এফ , η , জি ε এফ এবং একটি comonad এফ জি , ε , এফ η জি । উল্লেখযোগ্যভাবে, এফ এবং জি এন্ডোফান্টর হওয়ার দরকার নেই এবং সাধারণভাবে সেগুলি হয় না (উদাহরণস্বরূপ, তালিকা মোনাদটি এস টি এবং এম এন এর মধ্যে মুক্ত এবং ভুলে যাওয়া ফান্টিকার মধ্যে একটি সংযোজনF,G,ϵ,ηGF,η,GϵFFG,ϵ,FηGFGSetMon)।

সুতরাং, আপনি যা করতে চান তা হ'ল রিডার (বা লেখক) গ্রহণ এবং এটিকে অ্যাডমিন্ট ফান্টেক্টারে বিভক্ত করা যা মোনাদ এবং সংশ্লিষ্ট কমোনাদকে উত্থিত করে। কোনটি বলার অপেক্ষা রাখে না যে রিডার এবং কোরেডার (বা লেখক এবং কৌরাইটার) এর মধ্যে যে সংযোগটি আপনি খুঁজছেন তা নয়।

এবং এটা সম্ভবত ভাল হিসাবে সংবাহন মনে করার , অর্থাত্ এক্স , ওয়াই { : এক্স × একজন ওয়াই } { * : এক্স ওয়াই একজন } । বা যদি এটি সহায়তা করে, - : হোম ( - × ,:hom(×A,=)hom(,=A)X,Y. {f:X×AY}{f:XYA}:hom(×A,=×1)hom(1,=A)


2 বছর আগে: আমি পাঠক এবং লেখকের জন্য সেট এবং এক শ্রেণীর বীজগণিত কাঠামোর মধ্যে সংযোজনের অনুরূপ কোনও সংজ্ঞা সংযোজন সম্পর্কে অবগত নই। অথবা আপনি কি বোঝাতে চেয়েছেন যে প্রতিটি মোনাদ একটি সংযোজন দ্বারা "ম্যাকলেন। ওয়ার্কিং ম্যাথেমেটিকের বিভাগসমূহ VI। ভি। মনডস এবং বীজগণিত। ২. একটি মোনাডের বীজগণিত। উপপাদ্য 1 (প্রতিটি মোনাডকে তার টি-বীজগণিত দ্বারা সংজ্ঞায়িত করা হয়েছে)। "? আপনি আরো নির্দিষ্ট হতে পারে? প্রকৃতপক্ষে আমার প্রশ্নটি তালিকা (মোনাদ) হিসাবে সেইগুলি (কো) মনডকে মার্জিত কথায় সংজ্ঞায়িত করার প্রয়াসের সমাপ্তি।
beroal

@ বেরোয়াল: আমি নিশ্চিত যে পাঠক এবং লেখক স্থগিত নন, বা কমপক্ষে আমি এখনও এর জন্য বিভাগগুলি কার্যকর করার উপায় খুঁজে পাইনি। না, আমার বক্তব্যটি ছিল যে উপরে বর্ণিত অনুসারে একটি অ্যাডজানশনের মাধ্যমে মোনাড এবং কমোনাদগুলি "একইভাবে" উত্থিত হয়েছিল। আমার কাছে ম্যাকলেনের একটি অনুলিপি নেই, তবে হ্যাঁ -অ্যালজেব্রাসগুলি উপরের কৌশলটির মানক নাম (তবে তারপরে আবার, সম্পর্কিত নয় এমন সমস্ত ধরণের জিনিসকে "এক্স-বীজগণিত", "ওয়াই-বীজগণিত", ... )। T
wren রোমানো

তালিকার মোনাডের কোন বিবরণটি আপনি বোধগম্যতার সাথে মেলে চেষ্টা করছেন? বিনামূল্যে monoid functor দেওয়া , ভুলো functor ইউ : এম এনএস টি , ইউনিট রূপান্তর η : আইডি এস টিইউ এফ ও counit রূপান্তর ε : এফ ইউ আইডি এম এন আপনি একটি ক্রোড়পত্র আছে এফ , ইউ ,এফ:এসটিএমএনইউ:এমএনএসটিη:idSetUFϵ:FUidMon । যার অর্থ আপনি একটি একসংখ্যা আছেইউ এফ , η , ইউ ε এফ মধ্যে যথা তালিকা একসংখ্যা এস টি । আর তুমি তালিকায় comonad পেতে এম এন :এফ ইউ , ε , এফ η ইউ । বাকপটু? F,U,η,ϵUF,η,UϵFSetMonFU,ϵ,FηU
wren রোমানো

ফ্যাক্টর (রিডার ক) এবং (রাইটার এ) স্থগিত করা হয়, এবং সেই অ্যাডমিশনটি (রাজ্য ক) মোনাডকে জন্ম দেয়।
বেরোয়াল

"না, আমার বক্তব্যটি ছিল যে উপরে বর্ণিত যেমন একটি অ্যাডজিশনমেন্টের মাধ্যমে" একইভাবে "তে মনড এবং কমোনাদগুলি উত্থিত হয়েছিল"। আপনি যদি সেট ও সোম বিভাগের সংস্থান থেকে মনাদ এবং কমোনাদ পান তবে আপনি সেটটিতে মনাদ এবং সোমটিতে কমোনাদ পাবেন - বিভিন্ন বিভাগ। তবে পাঠক এবং লেখক একই সিসিসি বিভাগে আছেন।
বেরোয়াল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.