[swift-evolution] [swift-evolution-announce] [Review] SE 0192 - Non-Exhaustive Enums
supergunman.na at gmail.com
Thu Dec 21 10:27:41 CST 2017
Before answering above, I would like to add
Since the users of the library will likely not accommodate the new cases (as it doesn’t exist yet), the `default/future` case will then not provide any real usage other than throwing exceptions. So the user will still need to update the code to actually accommodate these cases. This proposal doesn’t solve any real problem (more than what Swift 4 is currently doing).
Non-exhaustive behavior already exist as the `default` case, which user can op-in. So the decision on whether or not the enum is `exhaustive` is currently users’. This proposal will shift this decision to the author of the library, not the user. This is a huge minus since it moved the responsibility to one individual (or a single group of individual) rather than the actual users, and also reduce configurability (the user will have little say in whether or not an enum is exhaustive).
From my own experience, most of the time I use `switch`, I intentionally omit `default`, so the when the library update, I do know which portion needs to handle new cases (among other things). If any enum is decided by the author to be non-exhaustive, it would take away this ability. This refers back to previous bullet point.
What is your evaluation of the proposal?
This is a -1.
The ABI resilience can be a plus, but the requiring change in behavior is a huge minus, esp. the effect on users’ side of the library.
Is the problem being addressed significant enough to warrant a change to Swift?
I do see where this problem may arise, but the solution has too much drawback to be included in Swift.
Does this proposal fit well with the feel and direction of Swift?
This doesn’t fit well with the feel and direction of the Swift.
As mentioned above, the proposal shift decision on whether or not to support (or to require support) future cases to the author of library, not the users. IMO, it is not very Swifty (or even a good idea).
If you have used other languages or libraries with a similar feature, how do you feel that this proposal compares to those?
I used languages with non-exhaustive enum before, I can never go back after using the exhaustive one.
How much effort did you put into your review? A glance, a quick reading, or an in-depth study?
A several read through the proposal. I really try to like this proposal, as I see that the problem exists, but the solution still doesn’t sound.
> On Tue, Dec 19, 2017 at 11:58 PM, Ted Kremenek <kremenek at apple.com> wrote:
> The review of "SE 0192 - Non-Exhaustive Enums" begins now and runs through January 3, 2018.
> The proposal is available here:
> Reviews are an important part of the Swift evolution process. All review feedback should be sent to the swift-evolution mailing list at:
> or, if you would like to keep your feedback private, directly to the review manager.
> When replying, please try to keep the proposal link at the top of the message:
> Proposal link: https://github.com/apple/swift-evolution/blob/master/proposals/0192-non-exhaustive-enums.md
> Reply text
> Other replies
> What goes into a review of a proposal?
> The goal of the review process is to improve the proposal under review through constructive criticism and, eventually, determine the direction of Swift.
> When reviewing a proposal, here are some questions to consider:
> What is your evaluation of the proposal?
> Is the problem being addressed significant enough to warrant a change to Swift?
> Does this proposal fit well with the feel and direction of Swift?
> If you have used other languages or libraries with a similar feature, how do you feel that this proposal compares to those?
> How much effort did you put into your review? A glance, a quick reading, or an in-depth study?
> Ted Kremenek
> Review Manager
> swift-evolution-announce mailing list
> swift-evolution-announce at swift.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the swift-evolution