【发布时间】:2019-06-22 01:05:21
【问题描述】:
我刚刚观看了a video,它提出了用于基于属性的测试的集成收缩的概念。该方法似乎比 类型定向收缩 具有一些优势,但是在 this reddit thread 中指出,集成收缩方法不适用于单子生成器:
以您的方式进行收缩并不适合生成器的一元样式。这是一个例子,考虑生成一个任意列表(暂时忽略终止):
do x <- arbitrary xs <- arbitrary return (x:xs)现在,收缩的默认行为将首先收缩 x(保持 xs 不变),然后收缩 xs(保持 x 不变),这严重限制了收缩(局部最小值的概念现在不那么强大了)。
我将上述评论读为“集成收缩可能无法提供全局最小计数器示例”。但是,由于hedgehog 似乎能够为列表中的失败属性找到最少的反例,我想知道是否有一个示例可以显示上面引用中指出的缺点。
【问题讨论】:
-
hedgehog如何搜索列表空间?我希望它不会采用天真的单子方法(正是因为您指出的原因)。
标签: haskell quickcheck property-based-testing haskell-hedgehog