[swift-evolution] [swift-evolution-announce] [Review] SE-0095: Replace `protocol<P1, P2>` syntax with `Any<P1, P2>`
Scott James Remnant
scott at netsplit.com
Wed Jun 22 14:33:56 CDT 2016
Have given this a thorough review, both the final proposal, and its development during the draft phases on the list, etc.
Unfortunately I have to give the final proposal as it stands a strong -1.
While I appreciate the future benefits of more generic existential types, the final proposal introduces syntax that is flat-out confusing and inconsistent with the rest of Swift 3.
In Swift, the & operator is not used for composition, it serves only as the “Bitwise AND" operator for integer operations.
OptionSetType gives a good example, where Swift has actively abandoned & for composition. Previously code was in an Obj-C style, e.g.
NSOptionBox & NSOptionCarton
but now uses “,” for composition within an array context:
For this reason, I find that the pattern `<…, …, …>` is still a more Swift-y type composition syntax than the proposal.
More information about the swift-evolution