explainable-predicates (hackage): Explainable predicates are essentially functions from types to Bool which can additionally describe themselves and explain why an argument does or doesn't match.  They are intended to be used during unit tests to provide better error messages when tests fail.  For example, if a collection is missing an element, an explainable predicate can tell you which element is missing.
Keywords: bsd3|library|testing