What about that sentence made you worry? We were not wedded to that particular semantics, but it seemed logical enough to us.
The post ends with a handful of other difficult questions.
Well, I still disagree with that assertion; as the proposal says:
We believe these issues are not difficult to address
Generally, it seems like dealing with multiple conformance and conformance inheritance will compel us to come up with new rules.
I don't think it increases our obligation to come up with rules, because as noted in that thread we have all the same issues today in a slightly different form.
Although I don't claim such mechanisms cannot be designed or understood, having formalized and partially reimplemented Swift's current method resolution I'd argue that it's definitely not "simple".
Ah well, I never said requirement resolution was simple.
A protocol would have a single, well-understood meaning that doesn't change across access levels
My pitch does not challenge that assertion. A protocol would describe a single, well-understood API with the addition be that access levels would be part of that API.
This depends on your point of view I guess. The way I see it, each access level exposes a different API.
I'd be interested to discuss things the other way around. What use case solved by scoped conformance cannot be solved by access lower bounds?
That's an interesting question. Would these lower bounds solve Doug's problem or address the metadata and witness table bloat issues for which scoped conformances were originally designed? Another use case: two different modules want a conformance of public type Int
to public protocol C.Monoid
, but one module wants to use the (+, 0) monoid and the other wants to use the (*, 1) monoid.