fail package:massiv-test

The test case's classes (see classify)
The test case's labels (see label)
The test case which provoked the failure
A failed test run
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 property that should have failed did not
Indicates that a property is supposed to fail. QuickCheck will report an error if it does not fail.
Performs an IO action after the last failure of a property.
Performs an IO action every time a property fails. Thus, if shrinking is done, this can be used to keep track of the failures along the way.