অনুসরণ করে একটি মোনাডের একটি উদাহরণ যা বিকল্প কিন্তু একটি মোনাডপ্লাস নয়? :
ধরুন একটি monad। সম্পর্ক betweem কি কি একটি হচ্ছে বিকল্প , একটি MonadPlusCatch এবং MonadPlusDistr ? মিসম্ভাব্য ছয়টি জোড়ার প্রত্যেকটির জন্য আমার কাছে এমন একটি প্রমাণ থাকতে হবে যা একজনের দ্বারা অন্যকে বোঝায়, বা একটি পাল্টা উদাহরণ যা এটি দেয় না।
(আমি ব্যাবহার করছি
MonadPlusCatch একটি পার্থক্য করতে MonadPlus মাফিক বাম-ক্যাচ নিয়ম:
mplus (return a) b = return a
MonadPlusDistr একটি পার্থক্য করতে MonadPlus যে satifies বাম-বিতরণ নিয়ম:
mplus a b >>= k = mplus (a >>= k) (b >>= k)
হাস্কেলওয়িকিতে মোনাডপ্লাস দেখুন )
আমার বর্তমান জ্ঞান + স্বজ্ঞাততা হ'ল:
- MonadPlusDist বিকল্প -
সম্ভবতসত্য -এটা সহজবোধ্য মনে হয়, আমি বিশ্বাস করি আমি একটি প্রমাণ স্কেচ আছে, আমি এটা চেক করব এবং যদি এটি সঠিক, আমি পোস্ট করব এটাAndrewC এই অংশ উত্তর। - বিকল্প রাইটারো মোনাডপ্লাসডিস্ট - মিথ্যা - অ্যান্ড্রুসি তার উত্তরে যেমনটি দেখিয়েছিল : এটি বিকল্প , তবে এটি এটি মোনাডপ্লাসডিস্ট নয় (এটি মোনাডপ্লাসক্যাচ ) নয় বলে জানা গেছে ।
Maybe
মোনাডপ্লাসক্যাচ রাইটেরো বিকল্প -
সম্ভবতমিথ্যা - আমি বিশ্বাস করি যে (বা মূলত কোনও কিছু ) একটি কাউন্টারিক্স নমুনা হিসাবে পরিবেশন করা উচিত। কারণটি হ'লMaybeT (Either e)
MaybeT m'
((pure x) <|> g) <*> a = -- LeftCatch (pure x) <*> a -- which in general cannot be equal to ((pure x) <*> a) <|> (g <*> a)
আবার আমি পরীক্ষা করে পোস্ট করব (মজার ব্যাপার হচ্ছে, ঠিক
Maybe
এটা প্রতিপাদ্য আছে, যদি কারণ আমরা বিশ্লেষণ করতে পারেa
হয়Just something
বাNothing
-। উপরোক্ত AndrewC এর উত্তর দেখুন)- বিকল্প রাইটারো মোনাডপ্লাসক্যাচ -
সম্ভবতমিথ্যা - যদি আমরা প্রমাণ করি যে মোনাদপ্লাসডিস্ট র্যাটারো বিকল্প তখন একটি পাল্টা উদাহরণ হিসাবে সার্ভার করবে। (অথবা আমরা স্পষ্টভাবে এর জন্য বিকল্প আইন প্রমাণ করতে পারি ।)→[]
[]
- MonadPlusDist MonadPlusCatch - false - একটি পরিচিত পাল্টা উদাহরণ।
[]
- MonadPlusCatch MonadPlusDist - মিথ্যা - একটি পরিচিত পাল্টা উদাহরণ।
Maybe
f <$>
কোনও অভিব্যক্তিপূর্ণ ক্রিয়া করে না, এটি খাঁটি, তাই কোনওভাবে "পক্ষগুলি স্যুইচ" করা সম্ভব।