fail package:LambdaHack

Message describing the cause of failure of human command.
Exception signifying that atomic action failed because the information it carries is inconsistent with the client's state, (e.g., because the client knows too little to understand the command or already deduced the state change from earlier commands or is confused, amnesiac or sees illusory actors or tiles). Whenever we know the failure is logically impossible, we don't throw the AtomicFail exception, but insert a normal assertion or error call, which are never caught nor handled.
Possible causes of failure of request.
Possible causes of failure of request.
as VerbMsg, but a failed effect (returns UseId)
When a value is bound in do-notation, the pattern on the left hand side of <- might not match. In this case, this class provides a function to recover. A Monad without a MonadFail instance may only be used in conjunction with pattern that always match, such as newtypes, tuples, data types with only a single data constructor, and irrefutable patterns (~pat). Instances of MonadFail should satisfy the following law: fail s should be a left zero for >>=,
fail s >>= f  =  fail s
If your Monad is also MonadPlus, a popular definition is
fail _ = mzero
A helper function for error. To be used as in
case xs of
0 : _ -> error $ "insignificant zero" `showFailure` xs
Fixing the first argument to String instead of anything Showable prevents warnings about defaulting, even when OverloadedStrings extension is enabled.