Takip Etme MonadPlus olmayan ancak alternatif olan bir Monad örneği nedir? :
Varsayalım bir tek hücreli olup. İlişkiler betweem nelerdir m bir varlık Alternatif bir MonadPlusCatch ve MonadPlusDistr ? Altı olası çiftin her biri için ya birinin diğerini ima ettiğine dair bir kanıt ya da buna karşı olmayan bir karşı örnek istiyorum.
(Kullanıyorum
MonadPlusCatch bir ayırt etmek MonadPlus o karşılar Sol Yakalama kuralı:
mplus (return a) b = return aMonadPlusDistr bir ayırt etmek MonadPlus satifies o Sol Dağıtım kuralı:
mplus a b >>= k = mplus (a >>= k) (b >>= k)
HaskellWiki'deki MonadPlus'a bakınız .)
Mevcut bilgim + sezgim şudur:
- MonadPlusDist Alternatif -
muhtemelendoğru -basit görünüyor, bir kanıttaslağımolduğuna inanıyorum, kontrol edeceğim ve eğer doğruysa,AndrewC bu bölümü yanıtladı. -
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)tekrar kontrol edip yayınlayacağım. (İlginçtir, sadece için
Maybebiz eğer analiz edebilirsiniz, çünkü kanıtlanabilir olduğunuaolduğunuJust somethingveyaNothing-. Yukarıda belirtilen AndrewC cevabını bakınız)-
[][] -
[] -
Maybe
f <$>herhangi bir deyimsel hareket taşımadığı, saf olduğu için bir şekilde "yanları değiştirmek" mümkün olabilir.