This is a very simple type:
> data Exceptional x > = Failure String > | Success x
It's much like 'Maybe', except instead of 'Nothing', we have 'Failure String'.
A comparison could also be made to 'Either String'. I made this library because I was dissatisfied with the 'Monad' instance for 'Either'. In this type, 'fail = Failure'. It's rather simple.
Changes
[0.3.0.0] Fix erroneous behavior in 'foldExceptional' function added in version 0.2. This release actually does break (or rather fix) the 'foldExceptional' function, so be careful.
[0.2.0.0] Add 'exceptional' function to encapsulate ordinary exceptions in the 'Exceptional' monad. Add folding functions.
This release does not actually break the API, however I was rather tired when I chose the version number. This should be 0.1.6.
[0.1.5.0] Add 'exceptIO' function to encapsulate IO errors in the 'Exceptional' monad.
[0.1.4.3] Fix bug where 'exceptional' won't compile on 'base < 4.8'. Also move the changelog back to the description so it's more visible.
[0.1.4.2] Moved change log to a separate file so Hackage displays it correctly.
[0.1.4.1] Documentation enhancements/fixes.
[0.1.4.0] Added 'fromMaybe' and 'toMaybe' functions, and a link to the bug tracker.
[0.1.3.0] Fixed a typo. 0.1.2.0 won't build. Also added definition of 'empty' for 'Alternative'.
[0.1.2.0] Added 'fromEither' and 'toEither' functions.
[0.1.1.3] Hackage is terrible. Yet another formatting fix.
[0.1.1.2] Yet another formatting fix.
[0.1.1.1] Formatting fix to the haddock documentation.
[0.1.1.0] Add 'runExceptional' function.
[0.1.0.1] Minor documentation changes. No changes to the API.
[0.1.0.0] Initial version.