(Trying to move the conversation back to this thread to un-hijack Adrian's thread.)
In terms of Any<> vs any<>, I don't have any strong feelings and I think there are good arguments on both sides. I'm going to leave the proposal as Any<> but put a section in the 'Alternatives' discussing Any<> vs any<>, so that if it does go up for review the core team can review arguments and maybe choose one they like. Any<> pros: - The convention is to capitalize types. 'Any<A, B>' is immediately apparent as a type, and looks like a type when used in places where types would be used (like function signatures) - Having 'Any<>' allows us to keep the well-established 'Any' without having to typealias to 'any' or 'any<>' forms - any is a keyword, but an argument can be made that keywords that fit into a particular syntactic slot should be capitalized like normal members of that slot. Any<> fits into the slot of types, so it should be named like a type - In the future, AnySequence and friends can be replaced with, e.g. Any<Sequence>. This increases discoverability of existential features, like a future "Any<Sequence where .Element == Int>". A number of developers have mentioned that they suspect protocol<> is rarely used, although GitHub's search makes it impossible to quantify. any<> pros: - any<>'s lower case 'a' distinguishes it from other generic types that use similar syntax, such as "Array<Int>". Perhaps developers, especially those new to Swift, will be confused as to why "Any<A, B>" isn't a generic type, but "Dictionary<A, B>" is. New developers aside, it may be jarring to have to mentally 'context switch' between Any<A, B> as an existential, and AnythingButAny<A, B> as a generic type. - any's lower case 'a' makes it clear to users it's not a 'normal' type, but rather a construction that can be used as a type in some cases, and can't be used everywhere a concrete type can. - 'any' isn't a specific type - it's a kind of type (an existential), and this spelling fits better with the other 'kind' names: 'class', 'struct', 'enum', 'protocol' - any is a keyword, and keywords are lower case. Perhaps consistency in this matter is more important. Any other thoughts? I will submit an amendment tonight if people are okay with this. Austin > On May 18, 2016, at 10:35 PM, Austin Zheng <[email protected]> wrote: > > Hello all, > > Swift 3.0 focuses on making breaking changes that prepare the way for > features to be introduced in future releases. In that spirit, I would like to > solicit feedback on a very simple proposal: renaming 'protocol<>' to 'Any<>', > as described in the 'Completing Generics' manifesto. > > The proposal can be found here: > https://github.com/austinzheng/swift-evolution/blob/az-protocol-to-any/proposals/XXXX-any-as-existential.md > > <https://github.com/austinzheng/swift-evolution/blob/az-protocol-to-any/proposals/XXXX-any-as-existential.md> > > Best, > Austin
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
