gpt4 book ai didi

haskell - QuickCheck 2 有什么新功能?

转载 作者:行者123 更新时间:2023-12-03 07:19:10 24 4
gpt4 key购买 nike

QuickCheck 1 和 QuickCheck 2 之间的主要区别是什么?通过查看 Haddock 文档,我可以看到它分为更多模块,co Arbitrary 已被新的 Fun 类型和 FunArbitrary 类取代(这对我来说似乎更容易理解),并且现在支持测试单子(monad)代码。我还应该注意什么?

最佳答案

我看到了 QuickCheck 2 的一项重大进步,我认为它与单子(monad)代码测试一样重要,甚至更重要:

class Arbitrary  a where
arbitrary :: Gen a
shrink :: a -> [a]

真的太棒了。收缩方法是可选的,但如果您可以提供一个“可能为空”的类型缩减列表,那么当 QuickCheck 发现错误检查时,它会尝试通过收缩来将错误数据减少到最少,然后重新进行重新排序。 -测试一下。只要失败就会缩小。

一个让你信服的小例子,不缩水:

FormulaPrim deparsing    : *** Failed! Falsifiable (after 4 tests):
Poly (Polynome "p" [(CoeffRatio (26 % 25),PolyRest (CoeffRatio (129 % 40))),(CoeffInt 96,PolyRest (CoeffInt 11)),(CoeffInt 29,PolyRest (CoeffRatio (147 % 121))),(CoeffRatio (62 % 9),PolyRest (CoeffRatio (90 % 43))),(CoeffInt 56,PolyRest (CoeffInt 27))])

与:

FormulaPrim deparsing    : *** Failed! Falsifiable (after 2 tests and 3 shrinks):
Poly (Polynome "t" [(CoeffInt 14,PolyRest (CoeffInt 126))])

更短的失败示例意味着更快的调试:-)

关于haskell - QuickCheck 2 有什么新功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1933283/

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