A verdict is a Boolean pass or fail 'verdict' on a test result; an instance of the Verdict class evaluates to such a result, but may also contain additional information about the test. A collection of verdicts is also a verdict: if all of the results are ``pass'', the verdict for the collection is pass. Specifically, the collective verdict is the Boolean conjunction of the individual verdicts. Therefore any foldable container of verdicts is also a verdict. \begin{code} {-# LANGUAGE FlexibleInstances #-} module Test.GenCheck.Base.Verdict ( Verdict(..), SummaryVerdict(..) ) where import Data.Foldable(Foldable()) class Verdict s where verdict :: s -> Bool instance Verdict Bool where verdict = id \end{code} Structures can be evaluated to a boolean if they are foldable and their elements are generic booleans. \begin{code} class Foldable s => SummaryVerdict s where summaryverdict :: Verdict v => s v -> Bool \end{code}