Considering the QuickCheck documentation, the type you are looking for is Result :
data Result = MkResult { ok :: Maybe Bool -- ^ result of the test case; Nothing = discard , expect :: Bool -- ^ indicates what the expected result of the property is , reason :: String -- ^ a message indicating what went wrong , interrupted :: Bool -- ^ indicates if the test case was cancelled by pressing ^C , abort :: Bool -- ^ if True, the test should not be repeated , stamp :: [(String,Int)] -- ^ the collected values for this test case , callbacks :: [Callback] -- ^ the callbacks for this test case }
and thanks to instance Testable Result you can use this as a return type of QuickCheck tests:
Prelude Test.QuickCheck Test.QuickCheck.Property> let test xs = if 13 `elem` xs then MkResult (Just False) True "Input contained bad number" False False [] [] else succeeded Prelude Test.QuickCheck Test.QuickCheck.Property> quickCheck test *** Failed! Input contained bad number (after 17 tests and 3 shrinks): [13]
source share