Delay mutations in shuffle so shirking is correct #54
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Workaround of hedgehogqa/fsharp-hedgehog#157 for the function
shuffle
.This change also improves the runtime from quadratic to linear. The previous runtime was quadratic because of the calls to
xs.Length
andxs.[i]
inside the loop, both of which have linear runtime.As mentioned in the Wikipedia article, I dropped the guard
i <> j
because we don't need it.Let's delay a release a bit longer. I want to see if there is anything else I can improve.