gpt4 book ai didi

Haskell:QuickCheck 属性无法使用含义进行测试

转载 作者:行者123 更新时间:2023-12-04 13:27:19 28 4
gpt4 key购买 nike

我有以下要使用快速检查测试的属性:

prop_zip xs ys = length xs == length ys ==> 
unzip (zip xs ys) == (xs,ys)

尽管根据 zip 和 unzip 的定义在逻辑上似乎是正确的,但对于相同长度的列表,该属性应该是正确的,但快速检查以:
*** Gave up! Passed only 49 tests.

提前感谢您的任何提示或建议!

最佳答案

通过生成随机测试用例难以满足的先决条件在 QuickCheck 中通常是一个坏主意。相反,您应该谨慎使用生成器来构建自动满足前提条件的测试用例。

例如,在这种情况下,您可以使用 forAll生成与第一个列表长度相同的第二个列表:

prop_zip' (xs :: [a]) =
forAll (vectorOf (length xs) arbitrary) $ \ (ys :: [a]) ->
unzip (zip xs ys) == (xs, ys)

(我在这里另外使用 ScopedTypeVariables 来确定第二个列表的类型。您可能需要更改它以满足您的特定需求。)

关于Haskell:QuickCheck 属性无法使用含义进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21675455/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com