I've occasionally had the idea of mitigating the "some things don't shrink very well" problem by allowing users to provide a fallback shrink strategy, where you just supply a function from x
to a collection of smaller x
s.
Interestingly it looks like hedgehog has exactly that feature: https://hackage.haskell.org/package/hedgehog-0.5/docs/Hedgehog-Gen.html (see the shrink
function)
Cool