<div dir="ltr">We&#39;d like to announce the next installment of the Failure Framework. Based on feedback, our main goals in this release is to reduce the number of external dependencies and avoid complications with monad transformer libraries at the core of the framework. We have made the following changes:<br>
<br>* Failure is not tied directly to monads anymore. The main typeclass is Failure, which provides the failure function. MonadFailure, ApplicativeFailure and FunctorFailure are provided for convenience.<br>* The Failure typeclass is now located in the failure package, which has no dependencies. All code dealing with transformers and mtl has been factored into control-monad-failure and control-monad-failure-mtl, respectively.<br>
<br>In addition, we are simultaneously releasing the following packages:<br>* safe-failure provides safe versions of dangerous, non total functions, such as head, by returning failures. It depends exclusively on failure.<br>
* attempt provides a concrete data type for handling extensible exceptions as failures. It depends exclusively on failure.<br>* control-monad-attempt provides a monad transformer for attempt using the transformers library. We do not provide currently an mtl version of this package, but can provide one if there is demand.<br>
* control-monad-exception, explicitly typed, checked exceptions with monadic stack traces.<br><br>Below are the links to the packages just released. Enjoy!<br><br><a href="http://hackage.haskell.org/package/failure-0.0.0">http://hackage.haskell.org/package/failure-0.0.0</a><br>
<a href="http://hackage.haskell.org/package/control-monad-failure-0.6.0">http://hackage.haskell.org/package/control-monad-failure-0.6.0</a><br><a href="http://hackage.haskell.org/package/control-monad-failure-mtl-0.6.0">http://hackage.haskell.org/package/control-monad-failure-mtl-0.6.0</a><br>
<a href="http://hackage.haskell.org/package/safe-failure-0.4.0">http://hackage.haskell.org/package/safe-failure-0.4.0</a><br><a href="http://hackage.haskell.org/package/attempt-0.2.0">http://hackage.haskell.org/package/attempt-0.2.0</a><br>
<a href="http://hackage.haskell.org/package/control-monad-attempt-0.0.0">http://hackage.haskell.org/package/control-monad-attempt-0.0.0</a><br><a href="http://hackage.haskell.org/package/control-monad-exception-0.8.0">http://hackage.haskell.org/package/control-monad-exception-0.8.0</a><br>
<a href="http://hackage.haskell.org/package/control-monad-exception-mtl-0.8.0">http://hackage.haskell.org/package/control-monad-exception-mtl-0.8.0</a><br><a href="http://hackage.haskell.org/package/control-monad-exception-monadsfd-0.8.0">http://hackage.haskell.org/package/control-monad-exception-monadsfd-0.8.0</a><br>
<a href="http://hackage.haskell.org/package/control-monad-exception-monadstf-0.8.0">http://hackage.haskell.org/package/control-monad-exception-monadstf-0.8.0</a><br><br>Michael Snoyman, Pepe Iborra, Nicolas Pouillard<br></div>