Optimize replicateA to have same recursive structure as replicateA_ #4233
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.
follow up to #4208
This implements replicateA in the same was as replicateA_. The benefit over using traverse, which was the previous implementation, is that traverse ignores that all the items in the sequence are identical. This implementation leverages that to get
O(log n)
calls tomap2
instead ofO(n)
calls tomap2
.Note, it is still an
O(n)
method in the worst case since finally we have to materialize theList[A]
which is lengthn
, but often it is themap2
calls that are expensive, not iterating the list.