> On 28 Feb 2017, at 22:53, Jordan Rose via swift-evolution > <swift-evolution@swift.org> wrote: > > Nitpick: 'C<T> & P' is just 'C<T>' in this example. You'd need a refinement > of 'P' to make it interesting ('C<T> & Q'). > > Jordan >
Or conformance to P needs to be conditional. That is my only issue with this proposal: why limit it to class types? I think it needs to be generalised to allow all concrete type + protocol existentials, in order to make conditional conformances useful. For example, let’s say I have a type “MyStruct” which conditionally conforms to “MyProtocol": protocol MyProtocol { … } struct MyStruct<T: Something> { … } // Conditional conformance to MyProtocol extension MyStruct: MyProtocol where T.AnAssociatedType == SomeType, T.AnotherAssociatedType: SomeOtherProtocol /* ...etc */ { … } Now, I want a conforming struct. How am I supposed to do that? I think the most logical way is to write: var conformingStruct: MyStruct & MyProtocol … which is the generalisation of what is being talked about here. Sorry if that’s broadened the scope too much. - Karl >> On Feb 28, 2017, at 13:20, Joe Groff via swift-evolution >> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote: >> >> Composing a base class and protocol requirements opens up the possibility of >> using the base class to constrain away a protocol's associated types, e.g.: >> >> protocol P { associatedtype T; func foo(_: T) } >> class C<T>: P { func foo(_: T) {} >> >> It'd be worth calling out explicitly whether this proposal allows `C<T> & P` >> to be used as an existential type, since although P has free associated >> types, the composition does not. >> >> -Joe >> >>> On Feb 28, 2017, at 1:11 PM, Douglas Gregor via swift-evolution >>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote: >>> >>> Hello Swift community, >>> >>> The review of SE-0156 "Class and Subtype existentials" begins now and runs >>> through March 7, 2017. The proposal is available here: >>> >>> https://github.com/apple/swift-evolution/blob/master/proposals/0156-subclass-existentials.md >>> >>> <https://github.com/apple/swift-evolution/blob/master/proposals/0156-subclass-existentials.md> >>> Reviews are an important part of the Swift evolution process. All reviews >>> should be sent to the swift-evolution mailing list at >>> >>> https://lists.swift.org/mailman/listinfo/swift-evolution >>> <https://lists.swift.org/mailman/listinfo/swift-evolution> >>> 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/0156-subclass-existentials.md >>> Reply text >>> >>> Other replies >>> What goes into a review? >>> >>> The goal of the review process is to improve the proposal under review >>> through constructive criticism and, eventually, determine the direction of >>> Swift. When writing your review, here are some questions you might want to >>> answer in your review: >>> >>> • 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? >>> More information about the Swift evolution process is available at >>> >>> https://github.com/apple/swift-evolution/blob/master/process.md >>> Thank you, >>> >>> -Doug >>> >>> Review Manager >>> >>> _______________________________________________ >>> swift-evolution mailing list >>> swift-evolution@swift.org <mailto:swift-evolution@swift.org> >>> https://lists.swift.org/mailman/listinfo/swift-evolution >>> <https://lists.swift.org/mailman/listinfo/swift-evolution> >> >> _______________________________________________ >> swift-evolution mailing list >> swift-evolution@swift.org <mailto:swift-evolution@swift.org> >> https://lists.swift.org/mailman/listinfo/swift-evolution >> <https://lists.swift.org/mailman/listinfo/swift-evolution> > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution