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.
This adds:
SparseArraysBaseNext.InterfaceImplementations
for generic logic surrounding the@derive
macro.AbstractInterface(::Type)
.AbstractArrayGetIndex
and just usegetindex
to specify which functions to derive.So with this PR for a new type:
you can do:
or:
In that way you can have more fine-grained control over which implementation you want to use to derive a certain function.
Something that is pretty bad with the current code design is that each function has definitions like:
to overload the Base definition and forward to the interface-based definition.
Ideally these would be generated automatically and there would be a way to specify the type signatures you want to overload. Maybe it would be better to have a syntax:
and then also we will need a way to generate lists of definitions programmatically, possibly with lists of expressions: