Herhangi bir liste üzerinde çalışan ayıklar adı verilen bir işlevi test ediyorum.Test Yapın.QuickCheck.Batch liste işlevlerini sınamak için varsayılan bir tür kullanın
extractions :: [a] -> [(a,[a])]
extractions [] = []
extractions l = extract l []
where extract [] _ = []
extract (x:xs) prev = (x, prev++xs) : extract xs (x : prev)
Ben
import Test.QuickCheck.Batch
prop_len l = length l == length (extractions l)
main = runTests "extractions" defOpt [run prop_len]
ile, örneğin, bunu test etmek istediğiniz Ama bu derleme etmeyeceğini; run
veya prop_len
için bir tür tedarik etmeliyim, çünkü QuickCheck [a]
üretemez, somut bir şey üretmek zorundadır.
main = runTests "extractions" defOpt [r prop_len]
where r = run :: ([Int] -> Bool) -> TestOptions -> IO TestResult
QuickCheck benim için a
seçmek yerine o run
türüne belirtilen ettikten almak için herhangi bir yolu var mı: Ben Int
seçti?