
On Mon, Apr 6, 2009 at 1:46 PM, Luke Palmer
On Mon, Apr 6, 2009 at 11:42 AM, David Menendez
wrote: Of course, this suggests that mfix should be fixM, so perhaps a better distinction is that mplus and mfix need to be defined per-monad, whereas filterM and replicateM are generic.
Don't you think that is an incidental distinction, not an essential one? It would be like naming our favorite operations mbind and joinM, just because of the way we happened to write the monad class.
Fair enough. I only added that comment when I noticed that my
explanation for picking replicateM over mreplicate also applied to
mfix.
Looking through Control.Monad, I see that all the *M functions require
Monad, whereas the m* functions require MonadPlus (or MonadFix). I
wonder to what extent that pattern holds in other libraries?
--
Dave Menendez