Change AndThen to directly check isRightAssociated#3569
Merged
Conversation
Codecov Report
@@ Coverage Diff @@
## master #3569 +/- ##
==========================================
+ Coverage 91.28% 91.32% +0.04%
==========================================
Files 386 386
Lines 8605 8611 +6
Branches 246 250 +4
==========================================
+ Hits 7855 7864 +9
+ Misses 750 747 -3 |
Contributor
|
By the way I'm marking this as an enhancement instead of a bugfix for the release notes, since the buggy part has never been released. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
fix #3568
The change to address the above is to avoid
equalwhich on a very deep structure can blow the stack. Instead, directly check the property we want: isRightAssociated.I removed a microoptimization (using != instead of <) since I would be SHOCKED if that changed the perf of this code which has to do quite a bit of pattern matching already. The != is not very safe since if a refactor gets it wrong, it can easily blow past the limit.
Lastly, I couldn't resist a bit of refactoring to share more of the code and improve associations (still at O(1) cost per andThen/compose).
cc @travisbrown