是否有一个QuickCheck
函数来生成一个长度在给定范围内的列表,类似于使用hedgegog
可以实现的列表,例如:
Gen.list (Range.constant 5 13) someGen
我猜一个人会写这样的东西:
do
n <- choose (minLength, maxLength)
vectorOf n genA
使该函数成为多余,但是然后我想知道是否存在QuickCheck
个组合器来缩小其不变性在于它们应具有最小长度的列表。 shrink
的定义,例如:
filter ((minLength <=) . length) [ xs' | xs' <- shrink xs ]
似乎效率很低,因为我们缩小了我们可以预先看到的无效术语(因为长度将小于最小阈值)。