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.
Here are a few tips for making the most of explainable-predicates.
explainable-predicates is tested with GHC versions from 8.6 through 9.4.