【发布时间】:2019-09-24 15:22:59
【问题描述】:
我在看shrink的cmets:
将最后一行写成
[Branch x' l' r' | x' <- shrink x, l' <- shrink l, r' <- shrink r]很诱人,但这是错误的!它将强制 QuickCheck 同时收缩x、l和r,一旦三个中的一个完全收缩,收缩就会停止。
对此我有点困惑,我认为收缩的问题在于我们正在采用子项收缩的笛卡尔积,这可能非常大。我不明白为什么一旦三个中的一个完全收缩后收缩就会停止。
因此,换句话说,我认为上面的定义将计算所有收缩组合 x、l 和 r,但我不希望收缩停止一旦条款完全收缩.
【问题讨论】:
-
是的,同意,也许这是一个错字,他们的意思是
[Branch x' l' r' | x' <- shrink x | l' <- shrink l | r' <- shrink r]在平行列表推导流行的时候?
标签: haskell quickcheck