Я использую QuickCheck
для проверки следующей программы:
{-# LANGUAGE TemplateHaskell #-}
import Test.QuickCheck
import Test.QuickCheck.All
elementAt :: (Integral b) => [a] -> b -> a
elementAt [x] _ = x
elementAt (x:xs) 1 = x
elementAt (x:xs) b = elementAt xs (b - 1)
prop_elementAt xs b = length xs > 0 && b >= 0 && b < length xs ==> elementAt xs (b + 1) == xs !! b
main = $(quickCheckAll)
Хотя ответ меняется, я постоянно получаю сообщение
*** Gave up! Passed only x tests.
Это что-то, о чем я должен беспокоиться? Или характер ввода теста диктует, как долго QuickCheck будет работать?