<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hey everyone,<div><br></div><div>What is the difference between MonadPlus and Alternative? &nbsp;In my mind, it would make sense for the difference to be that the former provides "and" semantics (i.e., x `mplus` y means do both x and y) whereas the latter provides "or" semantics (i.e., x &lt;|&gt; y means do x or y but not both). &nbsp;However, when I look at the instances defined for List I see that it is exactly the same as MonadPlus.</div><div><br></div><div>So is there any difference between the interpretation of MonadPlus and Alternative, or is the only difference between them that the former applies to Monad whereas the latter applies to Applicative?</div><div><br></div><div>Also, along similar lines, why does MonadPlus exist when it is essentially just a special case of Monoid? &nbsp;(That is, any MonadPlus instance could be equivalently cast as a Monoid instance.)</div><div><br></div><div>Thanks!</div><div>Greg</div></body></html>