> On Jun 9, 2016, at 7:50 PM, Thorsten Seitz via swift-evolution > <[email protected]> wrote: > > >> Am 09.06.2016 um 18:49 schrieb Dave Abrahams via swift-evolution >> <[email protected]>: >> >> >> on Wed Jun 08 2016, Jordan Rose <[email protected]> wrote: >> >>>> On Jun 8, 2016, at 13:16, Dave Abrahams via swift-evolution >>>> <[email protected]> wrote: >>>> >>>> >>>> on Wed Jun 08 2016, Thorsten Seitz >>> >>>> <[email protected] >>>> <mailto:[email protected]>> >>>> wrote: >>>> >>>>> Ah, thanks, I forgot! I still consider this a bug, though (will have >>>>> to read up again what the reasons are for that behavior). >>>> >>>> Yes, but in the case of the issue we're discussing, the choices are: >>>> >>>> 1. Omit from the existential's API any protocol requirements that depend >>>> on Self or associated types, in which case it *can't* conform to >>>> itself because it doesn't fulfill the requirements. >>>> >>>> 2. Erase type relationships and trap at runtime when they don't line up. >>>> >>>> Matthew has been arguing against #2, but you can't “fix the bug” without >>>> it. >>> >>> #1 has been my preference for a while as well, at least as a starting >>> point. >> >> I should point out that with the resyntaxing of existentials to >> Any<Protocols...>, the idea that Collection's existential doesn't >> conform to Collection becomes far less absurd than it was, so maybe this >> is not so bad. > > I think the problem is more that Any<Collection> does not conform to a > specific value for a type parameter T: Collection > > What I mean by this is that `Collection` denotes a type family, a generic > parameter `T: Collection` denotes a specific (though unknown) member of that > type family and `Any<Collection>` denotes the type family again, so there is > really no point in writing Any<Collection> IMO. > The type family cannot conform to T because T is just one fixed member of it. > It conforms to itself, though, as I can write > let c1: Any<Collection> = … > let c2: Any<Collection> = c1 > > That’s why I think that we could just drop Any<Collection> and simply write > Collection.
I was exploring this path a bit… https://gist.github.com/lmihalkovic/8aa66542f5cc4592e967bade260477ef > -Thorsten > _______________________________________________ > 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
