হাস্কেলের কমোনাড টাইপক্লাস কী?


105

হাস্কেলের কমোনাড টাইপক্লাস কী? থেকে Comonad মতই comonad প্যাকেজের মধ্যে Control.Comonad (যে কোন অন্যান্য প্যাকেজের প্রদান একটি Comonad typeclass রয়েছে ব্যাখ্যা স্বাগত জানাই)। আমি কমোনাড সম্পর্কে অস্পষ্টভাবে শুনেছি, তবে আমি এটি সম্পর্কে যা জানি তা হ'ল এটি মোনাডের extract :: w a -> aসমান্তরাল এক ধরণের সরবরাহ করে return :: a -> m a

"বাস্তব" কোডে কমোনাদের "বাস্তব জীবন" ব্যবহারের জন্য বোনাস পয়েন্টস।


"কো" এবং সাধারণের মধ্যে পার্থক্য কী তা আমি সত্যিই দেখতে চাই। আমি জানি একটি মোনাড কি। সুতরাং যদি আমি জানি যে "কো" এর অর্থ কী, আমি নিজের উপসংহারে বলতে পারি, কোন কমোনাদ কী, তা গভীরভাবে বুঝতে পারি। আলেক্সি রোমানভের উত্তর সে দিক থেকে কিছুই করতে পারেনি।
Evi1M4chine

2
@ Evi1M4chine: "co" (আলগাভাবে) এর অর্থ "তীরগুলি ফ্লিপ করুন"। এখানে একটি মোটামুটি ভিজ্যুয়াল। Monadic অপারেশন বিবেচনা করুন: return :: a ~> m a, flip bind :: (a ~> m b) -> (m a ~> m b)। Squiggly তীর বিপরীত এবং আপনি comonadic অপারেশন পাবেন: extract :: a <~ w a, extend :: (a <~ w b) -> (w a <~ w b)( extract :: w a -> a, extend :: (w a -> b) -> w a -> w b)
ড্যান বার্টন

আপনাকে ধন্যবাদ ড্যান বার্টন ... সুতরাং একটি মোনাডের সাথে থাকার সময় আপনি "অভ্যন্তরীণ" (নতুন এবং পরিবর্তিত জিনিসগুলিতে স্টাফ করা) একটি কমোনাড নিয়ে কাজ করেন, আপনি "বাইরে" (শেষ পর্যন্ত বা কেবল তাদের পরিবর্তন করার জন্য) নিয়ে কাজ করেন । এটা কি সঠিক? কারণ এটি গভীর বোঝার সাথে অবশ্যই অনেক সাহায্য করে।
Evi1M4chine

কমোনডগুলি সহ-প্রভাবগুলির মডেল হিসাবে ব্যবহার করা যেতে পারে। এখানে সহ-সংস্থাগুলির একটি দুর্দান্ত ভূমিকা: tomasp.net/coeffects
জেরোনোন

উত্তর:


83

এই লিঙ্কগুলি সহায়ক হতে পারে:

  1. সেলুলার অটোমেটা মূল্যায়ন কমোনাদিক । বিশেষত, "আপনি যখনই দেখেন যে বড় ডেটাস্ট্রাকচারগুলি প্রচুর ছোট কিন্তু অনুরূপ গণনাগুলির সাথে একত্রে বিস্তৃত রয়েছে, সেখানে আমরা একটি কমোনাডের সাথে কাজ করছি এমন একটি ভাল সুযোগ রয়েছে"।
  2. সিকোয়েন্সস, স্ট্রিম এবং বিভাগগুলি
  3. দৈনন্দিন জীবনে কমোনডস

1
+1 প্রথম লিঙ্কটি হ'ল এটি আমার জন্য সত্যই একত্রিত হয়েছিল।
লুচি

42
কেবলমাত্র লিঙ্ক-উত্তরে লিঙ্কযুক্ত সামগ্রীর সংক্ষিপ্তসার থাকতে হবে। বর্তমানে এই উত্তরটি ভাল এসও উত্তর হওয়ার জন্য উপযুক্ত নয়। এটি কিছুটা প্রসারিত করার কথা বিবেচনা করুন, যাতে এটি লিঙ্কযুক্ত নিবন্ধগুলি ছাড়া নিজেরাই দাঁড়াতে পারে।
বাকুরিউ

3
"আপনি যখনই দেখেন যে বৃহত ডাটাস্ট্রাকচারগুলি প্রচুর ছোট কিন্তু অনুরূপ গণনাগুলি থেকে একত্রে বিভক্ত হয়ে পড়েছে তখন আমরা একটি কমোনাডের সাথে কাজ করে আসার একটি ভাল সম্ভাবনা রয়েছে" .... তাহলে এর অর্থ কি খণ্ডিত শেডরগুলি কমোনাদিক?
স্যাম কেললেট

আমি দেখেছি এই উদাহরণে এর extendসহায়ক যাবে।
ক্রিস পেনার

22

এটি আমার প্রশ্নের পুরোপুরি উত্তর দেয় না, তবে আমি উত্তরের ফর্ম্যাটে কিছু প্রাসঙ্গিক তথ্য রাখতে চাই:

"কো" (আলগাভাবে) এর অর্থ "তীরগুলি ফ্লিপ করুন"। এখানে একটি মোটামুটি ভিজ্যুয়াল।

Monadic অপারেশন বিবেচনা করুন:

return :: a ~> m a
flip (>>=) :: (a ~> m b) -> (m a ~> m b)

স্কুইগলি তীরগুলি বিপরীত করুন এবং আপনি কমোনাদিক ক্রিয়াকলাপগুলি পান:

extract :: a <~ w a
extend :: (a <~ w b) -> (w a <~ w b)

(সাধারণ তীর দ্বারা লিখিত)

extract :: w a -> a
extend :: (w a -> b) -> w a -> w b

এই বিন্যাসে কীভাবে তা লক্ষ্য করুন, returnএটি এমন একটি তীর যা ঠিক তেমনিভাবে আর্গুমেন্টের স্লটে ফিট করে flip (>>=)এবং এটি একই extractএবং সত্য extend। মোনাড / কমোনাদ আইন বলছে যে আপনি যখন সেই স্লটে রাখবেন returnবা extractফলাফলটি সারণীর পরিচয় তীর। আইনগুলি একই, "কেবল তীর উল্টিয়ে" " এটি একটি দুর্দান্ত হ্যান্ডওয়ে উত্তর, তবে আশা করি এটি কিছুটা অন্তর্দৃষ্টি প্রদান করবে।


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