Есть ли функция 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 ]
, представляется довольно неэффективным, поскольку мы сокращаем сроки, которые мы могли видеть заранее, и которые недопустимы (поскольку длина будет ниже минимального порога).