Ich versuche QuickCheck nach another answer zu verwenden. Ich teste wie folgt aus:quickCheckAll gibt immer "True" zurück
{-# LANGUAGE TemplateHaskell #-}
import Test.QuickCheck
import Test.QuickCheck.All
last' :: [a] -> a
last' [x] = x
last' (_:xs) = last' xs
prop_test x = last' x == last x
check = do
putStrLn "quickCheck"
quickCheck (prop_test :: [Char]-> Bool)
check2 = do
putStrLn "quickCheckAll"
$quickCheckAll
Dann lade ich es in winGHCI und rufen check
und check2
. Ich bekomme
quickCheck
*** Failed! (after 1 test):
Exception:
list.hs:(7,1)-(8,23): Non-exhaustive patterns in function last'
""
was ich denke, es ist vernünftig. Ich dies jedoch erhalten von check2
quickCheckAll
True
Ich bin verwirrt, denn egal, wie ich die last'
Funktion ändern, auch falsch, quickCheckAll
immer wahr zurück.
Was ist falsch an meinem Code? Wie kann ich das beheben?
Für was es wert ist, wenn ich es versuche, bekomme ich auch eine Warnung: "Name prop_test in der Quelldatei gefunden, war aber nicht im Bereich" (mit einer Zeilennummer auf den Aufruf von 'quickCheckAll'). Sehr geheimnisvoll. –