fail package:cabal-install-solver

We failed to find a solution in this path through the tree
O(1). Create a log with one message before a failure.
indicates program failure with an exit code. The exact interpretation of the code is operating-system dependent. In particular, some values may be prohibited (e.g. 0 on a POSIX-compliant system).
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
The computation exitFailure is equivalent to exitWith (ExitFailure exitfail), where exitfail is implementation-dependent.
Information about a dependency solver failure.
O(1). Apply a function to the failure value in a log.