[Haskell-cafe] [Haskell] Functor => Applicative => Monad

Lennart Augustsson lennart at augustsson.net
Wed Dec 15 13:31:27 CET 2010


Yes, I think there should be a MonadFail distinct from MonadPlus.
Some types, like IO, are not in MonadPlus, but have a special implementation
of the fail method.

Personally, I think fail should just be removed, but that would break
existing code.
The fail method was introduced for the wrong reasons (better error messages
was the excuse).

  -- Lennart

On Wed, Dec 15, 2010 at 11:51 AM, John Smith <voldermort at hotmail.com> wrote:

> On 15/12/2010 11:39, Lennart Augustsson wrote:
>
>> Any refutable pattern match in do would force MonadFail (or MonadPlus if
>> you prefer).  So
>> 1.  (MonadFail m) => a -> m a,   \ a -> return a
>> 2.  (MonadFail m) => m a,   mfail "..."
>> 3.  (MonadFail m) => Maybe a -> m a,   \ a -> case a of Nothing -> mfail
>> "..."; Just x -> return x
>> 4.  (Monad m) => a -> b -> m a,   \ a b -> return a
>> 5.  (Monad m) => (a, b) -> m a,   \ (a, b) -> return a
>>
>> As far as type inference and desugaring goes, it seems very little would
>> have to be changed in an implementation.
>>
>
> Is there a need for a MonadFail, as distinct from mzero? fail always seems
> to be defined as error in ordinary monads, and as mzero in MonadPlus (or
> left at the default error).
>
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20101215/bc7d25bf/attachment.htm>


More information about the Haskell-Cafe mailing list