Tindak Lanjut Apa contoh dari Monad yang merupakan Alternatif tetapi bukan MonadPlus? :
Anggap adalah monad. Apa hubungan betweem m menjadi alternatif , sebuah MonadPlusCatch dan MonadPlusDistr ? Untuk masing-masing dari enam pasangan yang mungkin, saya ingin memiliki bukti bahwa satu menyiratkan yang lain, atau contoh tandingan yang tidak.
(Saya menggunakan
MonadPlusCatch untuk membedakan MonadPlus yang memenuhi aturan Left-Catch :
mplus (return a) b = return aMonadPlusDistr untuk membedakan MonadPlus yang mensahkan aturan Distribusi Kiri :
mplus a b >>= k = mplus (a >>= k) (b >>= k)
lihat MonadPlus di HaskellWiki .)
Pengetahuan + intuisi saya saat ini adalah:
- MonadPlusDist Alternatif -
kemungkinanbenar -sepertinya langsung, saya yakin saya punya sketsa bukti, saya akan memeriksanya dan jika itu benar, saya akan mempostingnyaAndrewC menjawab bagian ini. -
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)lagi saya akan periksa dan posting. (Menariknya, hanya
Maybeitu dapat dibuktikan, karena kita dapat menganalisis apakahainiJust somethingatauNothing-. Lihat tersebut jawaban AndrewC ini)-
[][] -
[] -
Maybe
f <$>tidak melakukan tindakan idiomatik, itu murni, jadi mungkin saja entah bagaimana "beralih sisi".