-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Elaborate on goals #12
Comments
But perhaps it's better to keep (suggested) goals in separate comments, so they can be easily voted for. |
As mentioned in #11 (comment) |
|
These are great, thanks. We can probably finish them up in a readme PR where anyone can suggest edits and additional points? |
Yes 👍 |
|
|
|
|
Can you elaborate on "(semi)automated" (and testing) and "strongly coupled"? I guess this means something like:
Or maybe a rephrase of what is currently in the README?
Sorry - this got unnecessarily long for a "please elaborate" comment :-) |
Can you elaborate on the concern here? This is implementation that supports 4? And 2 (the community using traits already?) |
We can always reorder in the PR, but also good to suggest ordering. |
I.e. the goal is to support hierarchies of interfaces (as mentioned in #6)? E.g. to support: @interface AnimalInterface ...
@interface BirdInterface <: AnimalInterface ...
@implements BirdInterface Duck and thus inheriting |
I.e., methods dispatch wrt. multiple arguments, so the interface definitions should support defining methods wrt. tuples of types. (edit: @rafaqz you mentioned something like that in #6 (comment) - but that comment might be about something else...) |
I was trying to capture that the interface definition contains tests. The strong coupling is via being in the same macro so the structure is forced. Previously the Now what we have is semi-automated, in that you get a function defined that runs tests, but you have to manually run it somewhere in your test suite and we have to trust that everyone does that. This is a compromise for performance, and it may not be possible to do more than this generally.
This might be the most accurate goal though
I don't think the compile time testing part is broadly possible in practice
The invenia blog style is the basis of a lot of this. But it hasn't lead to a consistent recognizable way of reading and running interface tests across the ecosystem. So we are aiming for a little more structure than that. Or maybe a rephrase of what is currently in the README?
As mentioned above it used to, but currently it does not automatically enable them, and its an open question if it should. (hmm maybe you meant "provide" here rather than "enable")
As a generic statement this one is pretty good :) |
I would suggest to leave the "values" part out of this to make it less controversial :-) Maybe put the "interface provides values" in a list of candidate goals being considered. |
hah sorry I should have broken that up |
Feel free to edit (for the time being) :-) |
5 This was to make it clear that traits and tests are not the same thing, and probably need to stay decoupled. So its really in opposition to 4. I have just found this to be a common point of confusion. |
|
Yes - good to get things clarified! 🙏 👍 So this was a response to 5 (not 6)? I.e.
|
yeah, 5 😅 |
I think it would be an idea to elaborate a bit on the goals of this package - and hence on the goals of defining and implementing interfaces in Julia.
(as this package has claimed a rather generic name - and is making good use of it 👍)
I.e. to compile a more elaborate list of goals and get these in the README/documentation.
To compile answers for issues brought up e.g. in
E.g., the obvious one:
The text was updated successfully, but these errors were encountered: