testMain = do
allPass <- $quickCheckAll
unless allPass exitFailure
According to the QuickCheck documentation, in order to utilize quickCheckAll, the IO action that performs $quickCheckAll must have return [] before its definition.
To use quickCheckAll, add a definition to your module along the lines of
return []
runTests = $quickCheckAll
and then execute runTests.
So applying it to your testMain definition, it would end up being
The documentation also provides an explanation for such need:
Note: the bizarre return [] in the example above is needed on GHC 7.8 and > later; without it, quickCheckAll will not be able to find any of the
properties. For the curious, the return [] is a Template Haskell
splice that makes GHC insert the empty list of declarations at that
point in the program; GHC typechecks everything before the return []
before it starts on the rest of the module, which means that the later
call to quickCheckAll can see everything that was defined before the
return []. Yikes!
The problem probably lies within the lines
According to the QuickCheck documentation, in order to utilize quickCheckAll, the IO action that performs
$quickCheckAll
must havereturn []
before its definition.So applying it to your testMain definition, it would end up being
The documentation also provides an explanation for such need: