gpt4 book ai didi

haskell - QuickCheck:为什么没有通过测试的功能以及改用什么功能?

转载 作者:行者123 更新时间:2023-12-04 11:18:15 26 4
gpt4 key购买 nike

为什么没有QuickCheck功能类似于 hedgehog success ?特别是我想知道如何翻译如下属性:

prop_specialPair :: Property
prop_specialPair = property $ do
(_, xs) <- forAll specialPair
case xs of
x:_ -> x /== 3
_ -> success


QuickCheck如果我使用 =/= 然后我被迫返回 Property 类型的东西,并且似乎没有返回传递属性的常量函数。

所以我要么不得不求助于 Bool类型:

prop_specialPair :: SpecialPair -> Bool
prop_specialPair SpecialPair { xs } =
case xs of
x:_ -> x == 3
_ -> True

或者对 success 使用非常尴尬的编码,例如:

prop_specialPair :: SpecialPair -> Property
prop_specialPair SpecialPair { xs } =
case xs of
x:_ -> x =/= 3
_ -> True === True
QuickCheck中是否有更好的方式来表达上面的属性? ?

最佳答案

您可以使用 property来自 Testable 的函数类和各种Testable创建 Property 的实例具有您需要的任何特征。

例如,property ()总是成功。再举一个例子,property (b :: Bool)如果 b == True 成功.

例如,您可以这样做:

prop_specialPair :: SpecialPair -> Property
prop_specialPair SpecialPair { xs } =
case xs of
x:_ -> x =/= 3
_ -> property ()

或者您可以使用 Testable Result 使其更明确。实例和值 succeeded :: Result :
prop_specialPair :: SpecialPair -> Property
prop_specialPair SpecialPair { xs } =
case xs of
x:_ -> x =/= 3
_ -> property succeeded

关于haskell - QuickCheck:为什么没有通过测试的功能以及改用什么功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59383136/

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