-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
Replace keyword is
with impls
#2483
Conversation
I'm trying to figure out the best way to put this:
For example on my point 3, look for uses of "impls" in https://github.com/carbon-language/carbon-lang/blob/trunk/docs/design/generics/details.md. Regardless of the rest, I think these will also need to be cleaned up in order to reduce confusion. But I have no idea what to suggest, to my point 2. |
|
Might also be good to rename pre-existing uses of |
Added some text about this concern to the alternatives considered section: 5c31cb5 |
I think you might be misunderstanding my concern, because the text focuses on the expanded meaning instead of the two possible readings of "impls". This PR also does not fix existing uses of "impls" in order to resolve ambiguity. For example:
My concern is that, in creating a second possible reading for "impls", it's harder to understand both code and documentation. Context is not always present: I don't think the above examples have much that can be relied on by readers to disambiguate. I think I'll find it challenging to understand the above cases; I would expect this to be particularly difficult for non-native English speakers. But if you disagree, please at least edit the existing uses of "impls" to remove ambiguity. I believe we should avoid using "impls" when it does not mean |
My concern is specifically with the choice of Is this similar to |
I filed a question-for-leads issue #2495 and posted a question in the #naming channel on Discord about the word to use for this keyword. |
Co-authored-by: Geoff Romer <gromer@google.com>
Thanks for the doc edits. :) |
I believe this is now ready for review. |
FWIW, it would seem useful for this to be split up into maybe proposal, doc-updates, toolchain updates, and explorer updates.... Would doing that at this point create too much git hassle? Fine if so, I'll try to work through it in phases. |
I've created #2707 and moved all the explorer and toochain changes into that PR. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approving as I think the critical and controversial part has been clearly resolved on the issue. =]
The doc updates all LG. I've left two minor suggestions on the proposal. LG and feel free to land with the suggestions. Also happy to chat more if any don't make sense.
Co-authored-by: Chandler Carruth <chandlerc@gmail.com>
This PR is making two main changes to the Explorer and Toolchain: - Replace the `is` keyword in `where SomeType is SomeInterface` with `impls`, so it is `where SomeType impls SomeInterface` - Rewrite uses of the "impls" to something else to avoid, frequently "`impl` declarations" or "implementations", to avoid confusion with the `impls` keyword. --------- Co-authored-by: Geoff Romer <gromer@google.com>
Includes proposals: - #990 - #2188 - #2138 - #2200 - #2360 - #2760 - #2964 - #3162 Also tries to use more precise language when talking about: - implementations, to avoid confusing `impl` declaration and definitions with the `impls` operator used in `where` clauses, an issue brought up in #2495 and #2483; - "binding patterns", like `x: i32`, and "bindings" like `x`. --------- Co-authored-by: Chandler Carruth <chandlerc@gmail.com>
Continued from part 1: #3231. Second step updating `docs/design/generics/details.md`. There remains some work to incorporate proposal #2200. - The biggest changes are incorporating much of the text of proposals: - #2173 - #2687 - It incorporates changes from proposals: - #989 - #1178 - #2138 - #2200 - #2360 - #2964 - #3162 - It also updates the text to reflect the latest thinking from leads issues: - #996 - #2153 -- most notably deleting the section on `TypeId`. - Update to rule for prioritization blocks with mixed type structures from [discussion on 2023-07-18](https://docs.google.com/document/d/1gnJBTfY81fZYvI_QXjwKk1uQHYBNHGqRLI2BS_cYYNQ/edit?resourcekey=0-ql1Q1WvTcDvhycf8LbA9DQ#heading=h.7jxges9ojgy3) - Adds reference links to proposals, issues, and discussions relevant to the text. - Also tries to use more precise language when talking about implementations, to avoid confusing `impl` declaration and definitions with the `impls` operator used in `where` clauses, an issue brought up in - #2495 - #2483 --------- Co-authored-by: Richard Smith <richard@metafoo.co.uk>
Use the keyword
impls
instead ofis
when writing awhere
constraint that a type variable needs to implement an interface or named constraint.What was previously (provisionally) written:
will now be written: