
17 Nov
2016
17 Nov
'16
10:45 p.m.
The documentation for Control.Monad.Fail notes
If your Monad is also MonadPlus, a popular definition is
fail _ = mzero
This could be made a default definition for MonadPlus or Alternative
class Monad m => MonadFail m where fail :: String -> m a fail = const empty default fail :: Alternative m => String -> m a
This simplifies instances like [] and Maybe
instance MonadFail [] instance MonadFail Maybe