Tôi đang cố gắng sử dụng QuickCheck theo số another answer. tôi thử nghiệm như thế này:quickCheckAll luôn trả về "True"
{-# 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
Sau đó, tôi tải nó trong winGHCI và gọi check
và check2
. Tôi nhận được
quickCheck
*** Failed! (after 1 test):
Exception:
list.hs:(7,1)-(8,23): Non-exhaustive patterns in function last'
""
mà tôi nghĩ nó hợp lý. Tuy nhiên, tôi có được điều này từ check2
quickCheckAll
True
Tôi đang bối rối vì không có vấn đề làm thế nào tôi thay đổi last'
chức năng, thậm chí sai, quickCheckAll
luôn trở thành True.
Mã của tôi có vấn đề gì? Làm thế nào tôi có thể sửa lỗi này?
Đối với giá trị của nó, khi tôi thử, tôi cũng nhận được cảnh báo: "Tên prop_test được tìm thấy trong tệp nguồn nhưng không nằm trong phạm vi" (với số dòng chỉ cuộc gọi đến 'quickCheckAll'). Rất huyền bí. –