This PR fundamental changes to how QuickTheories handles shrinking. Shrinking is now performed in a manner similar to https://github.com/HypothesisWorks/hypothesis-python - the shrinker is unaware of the type it is shrinking, instead working in terms of a typeless precursor.
This change alters some parts of the api and will require code changes in any projects updating, however we believe this is worthwhile as it allows generators to be composed together.
A number of things about the implementation are unsatisfying including
Arrays of longs are used as precursor values - this is wasteful as in many cases an int or byte would suffice
Several abstractions feel similar to each other / wrong
This details can however be improved upon in the future without needing to make further breaking changes to the api.
This PR fundamental changes to how QuickTheories handles shrinking. Shrinking is now performed in a manner similar to https://github.com/HypothesisWorks/hypothesis-python - the shrinker is unaware of the type it is shrinking, instead working in terms of a typeless precursor.
This change alters some parts of the api and will require code changes in any projects updating, however we believe this is worthwhile as it allows generators to be composed together.
A number of things about the implementation are unsatisfying including
This details can however be improved upon in the future without needing to make further breaking changes to the api.