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

John Smith voldermort at hotmail.com
Wed Dec 15 09:30:31 CET 2010


On 15/12/2010 04:01, Jonathan Geddes wrote:
> Fail can't just be removed. That would just break too much code. For
> example, I find myself writing code like the following:
>
>> [a,b,c]<- Just someList
>
> in place of
>
>> let [a,b,c] = someList
>
> so that pattern match failure is "lifted" into the maybe monad (as
> long as I'm already in the maybe monad).
>
> I would like to see a MonadFail class, with one method 'fail', such
> that it is a compile-time error to try 'failable' pattern matches in a
> monad that is not an instance of MonadFail.
>
> --Jonathan

Perhaps pattern match failures in a MonadPlus should bind to mzero - I believe that this is what your example and 
similar wish to achieve.

I've updated http://haskell.org/haskellwiki/Functor-Applicative-Monad_Proposal to mention this. Does anyone know why 
fail and Pointed (in the paragraph "This would eliminate...") aren't beginning a new paragraph? They are both preceded 
by a blank line in the wiki source.




More information about the Haskell-Cafe mailing list