<div dir="ltr">Folks,<br>
<br>
We are extremely happy to announce the control-monad-failure and safe-failure packages for error handling.<br>
<br>
control-monad-failure provides a basic notion of failure which does not commit to any concrete representation.<br>
It is just a version of the MonadError class without the annoying bits.<br>
<br>
&gt; class MonadFailure e m where failure :: e -&gt; m a<br>
<br>
Instances are provided for several concrete representations of failure
handling: Maybe, Either, ErrorT, Control.Exception.Throw, and [].<br>
<br>
safe-failure is a fork of Neil Mitchell&#39;s Safe package providing MonadFailure versions of several partial functions<br>
in the Prelude, which instead of failing with a runtime error fail with Failure.<br>
<br>
&gt; head :: MonadFailure HeadFailure m =&gt; [a] -&gt; m a<br>
<br>
This is a joint release from the authors of the attempt and the control-monad-exception packages,<br>
and accompanying releases of those packages have been made making them adopt the MonadFailure interface.<br>
We have also created a wiki page explaining our reasons for following this path in:<br>
<br>
  <a href="http://www.haskellwiki.org/Failure" target="_blank">http://www.haskellwiki.org/Failure</a><br>
<br>
<br>
Thanks,<br><font color="#888888">
Jose Iborra, Nicolas Pouillard and Michael Snoyman</font></div>