Thank you for all your great feedback! Let me try rephrasing what I said, because it wasn't very clear. Apologies.
NSView is not an existential, like you said. Any<...> syntax is, as far as we've seen, always used for existential types. "Any<NSView>" *looks* like an existential because it has the "Any<...>" syntax, but if it's a synonym for just "NSView" then it actually isn't an existential. So "Any<NSView>" isn't an existential, but it looks like one. This is something I think would be confusing to a lot of people, and also redundant: there is no reason as far as I know to ever write Any<SomeClass> when you could just write SomeClass, so by banning the confusing form we don't lose any expressive power. Hope that helps, Austin > On May 27, 2016, at 1:24 AM, Thorsten Seitz <tseit...@icloud.com> wrote: > >> >> Am 26.05.2016 um 22:44 schrieb Austin Zheng via swift-evolution >> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>>: >> >> (inline) >> >> On Thu, May 26, 2016 at 12:22 PM, David Hart <da...@hartbit.com >> <mailto:da...@hartbit.com>> wrote: >> Hi Austin, >> >> I never had te occasion to say thanks for the work you have put in this >> proposal, so thanks! I’m really looking forward to be able to have some form >> of it accepted and implemented in Swift. >> >> Thank you! I just hope a proposal like this one ends up being good enough >> that it means less work for the core team, not more... >> >> >> Here are a few comments: >> >> 1) Why would Any<> and Any<NSView> be illegal? What error messages would >> they generate? Why not make them simply synonymous to Any, and NSView, the >> same way protocol<> currently behaves? >> >> "Any<>" being illegal is a syntactic battle that is being fought over in a >> different thread; I'm not personally invested one way or another. (We might >> not even adopt "Any" syntax specifically; Joe Groff has ideas for a >> different syntax that doesn't use the brackets.) >> >> "Any<NSView>" is an existential, and "NSView" isn't. Existentials' metatypes >> are different from the metatypes of concrete types, and the ways they can be >> used with generics is different as well. My opinion is that Any<...> >> signifies an existential, and allowing the use of "Any<SomeClass>" as a >> concrete type would just confuse people even more. > > > This is something where I still have a problem understanding what an > existential is in the Swift sense. In the "normal“ sense (as defined in > Wikipedia or Haskell) NSView cannot be an existential because it has no > unbound associated types. It cannot be just made an existential either. How > would that work? > > So, what is the meaning of `Any<NSView>` being an existential? How is that > type different from the type `NSView`? > > -Thorsten
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution