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 a
MonadPlusDistr 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
Maybe
biz eğer analiz edebilirsiniz, çünkü kanıtlanabilir olduğunua
olduğunuJust something
veyaNothing
-. 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.