> On 28 Feb 2017, at 22:53, Jordan Rose via swift-evolution
> <[email protected]> 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
>> <[email protected] <mailto:[email protected]>> 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
>>> <[email protected] <mailto:[email protected]>> 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
>>> [email protected] <mailto:[email protected]>
>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>
>> _______________________________________________
>> swift-evolution mailing list
>> [email protected] <mailto:[email protected]>
>> https://lists.swift.org/mailman/listinfo/swift-evolution
>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution