On Aug 23, 2016, at 1:49 PM, Anton Zhilin via swift-evolution 
<[email protected]> wrote:
> I haven't yet prepared a formal proposal, but the idea should be understood 
> by pretty much everyone. This topic has been discussed, but deferred to 
> "post-Swift3". I think the time for it has come.

Hi Anton,

This is a source breaking change, and we don’t have a framework established for 
how to handle those in the post-swift 3 world yet.  The core team is focusing 
on finishing up Swift 3 right now, but I expect that one of the first topics 
will be to define and iterate on the model for handling source changes.

Only once that is established can we determine whether a proposal like this is 
possible and know what the tradeoffs are that it entails.

-Chris


> 
> Basically, the proposal is to make protocols non-types. To use protocol as an 
> existential type, it must be wrapped in Any:
> 
> protocol ExampleProtocol {
>     func foo() -> Int
>     func bar() -> String
> }
> 
> func f<T: ExampleProtocol>()    // OK
> 
> func f(x: ExampleProtocol)    // error: ExampleProtocol is not a type
> func f(x: Any<ExampleProtocol>)    // OK
> 
> This will syntactically separate existential types from protocols themselves 
> and generic constraints.
> The proposal does not allow for much variativity, and it looks like the 
> proposal can be easily created and submitted.
> _______________________________________________
> 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

Reply via email to