Support init keyword in maximum/minimum
#35839
Closed
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.
We can supply
initfor general reductions, butmaximumandminimumdo not support this keyword. This PR allows them to do so:This was motivated by writing a blog post on invalidations (JuliaLang/www.julialang.org#794), and together with some changes to Pkg to supply the
initkeyword it eliminates all of thereduce_emptyinvalidations from loading FixedPointNumbers (which extendsreduce_empty).It's worth noting one unfortunate fact:
inithas different meanings forreduce(+, src)than forsum!(dest, src). In the former case, it's the value for seeding the result; in the latter, it's a boolean indicating whether to re-initializedestto the sentinel value or to keep whatever result is already there. This PR might make the situation slightly worse by supporting more cases where the conflict becomes appreciable (maximumvsmaximum!). This feels like something we should fix for Julia 2.0.Closes #35733