Recover withReverseSingleReferenceList nicely #554
Merged
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.
The thing-coding utility function
reverseSingleReference
was removed one year ago (9d8616c) at about the same time we were implementing compositions in general (#256), so it was never ported compositional data code.This PR recovers that function, now
reverseSingleReferenceList
andwithReverseSingleReferenceList
, as a composition. It's coded the same way as reverse reference lists and reverse contribution lists (#431) and in order to reduce code duplication, we've "cheaply" moved all the common details into a helper function which offers all boilerplate, up to callingtemplateCompositeFrom
. This means fast reverse references (#383) and sorting by date (#536) are now part of shared and written-once code,withReverseList_template
.There are now three compositions directly based on that shared code:
withReverseReferenceList
withReverseContributionList
withReverseSingleReferenceList
In the future, the helper should be made into a proper composition of its own right, which accepts a compositional subroutine (#342). But that's a ways off, and these changes get essentially the same code-writing benefits via deduplication. It'll be easier to port the new functions over to the subroutine style, once ready, since the differences between these compositions are now laid out plainly.
reverseSingleReferenceList
is still unused (as it was when we removed it), but we expect to use it to help represent more particular relationships between things in the near future.