> Am 23.05.2016 um 19:17 schrieb Matthew Johnson <[email protected]>:
> 
>> 
>> On May 23, 2016, at 10:57 AM, Thorsten Seitz via swift-evolution 
>> <[email protected] <mailto:[email protected]>> wrote:
>> 
>> 
>> 
>> Am 23.05.2016 um 00:18 schrieb Austin Zheng via swift-evolution 
>> <[email protected] <mailto:[email protected]>>:
>> 
>>> I agree; the difference between protocols with and without associated types 
>>> has been an endless source of confusion for a lot of people.
>>> 
>>> Speaking of which, for those who care I rewrote the draft proposal to 
>>> attempt a much more rigorous treatment of the semantics of the generalized 
>>> existential, including a discussion about existential type equivalence and 
>>> subtyping. It would be nice to see people poke holes in my logic so I can 
>>> patch them up. 
>>> https://github.com/austinzheng/swift-evolution/blob/az-existentials/proposals/XXXX-enhanced-existentials.md
>>>  
>>> <https://github.com/austinzheng/swift-evolution/blob/az-existentials/proposals/XXXX-enhanced-existentials.md>
>> I think that *all* methods should be available - at least in principle - 
>> with associated types 
>> - replaced by their upper bounds (i.e. Any if no constraints have been given 
>> either by the protocol definition itself or th existential) if in covariant 
>> position and 
>> - replaced by their lower bounds if in contravariant position
>> 
>> As it is not possible to define lower bounds in Swift, the lower bounds are 
>> always the bottom type (called `Nothing` in Swift and not be confused with 
>> optionals). The bottom type has no members and therefore a method 
>> referencing that type cannot be called and is effectively not available.
> 
> Called `Nothing` in Swift?  Where do you get that?  `func foo(s: Nothing) {}` 
> gives me “use of undeclared type `Nothing`”.  If Swift had a bottom type 
> wouldn’t we be able to declare a function accepting an argument of type 
> `Nothing` (we could just never call it because we couldn’t construct an 
> argument).

oops, sorry, I had wanted to type „called `Nothing` in Scala“ :-)

-Thorsten


> 
>> 
>> -Thorsten 
>> 
>>> 
>>> Austin
>>> 
>>>> On May 22, 2016, at 3:05 PM, Russ Bishop via swift-evolution 
>>>> <[email protected] <mailto:[email protected]>> wrote:
>>>> 
>>>> 
>>>>> On May 17, 2016, at 1:55 PM, Joe Groff via swift-evolution 
>>>>> <[email protected] <mailto:[email protected]>> wrote:
>>>>> 
>>>>> I agree with this. If we're certain we should reskin protocol<> as Any<>, 
>>>>> we should frontload that change—in addition to affecting source code, 
>>>>> it'd also influence the runtime behavior of type printing/parsing, which 
>>>>> can't be statically migrated in the future. I think any discussion of 
>>>>> extending existentials has to be considered out of scope for Swift 3, 
>>>>> though, so the Any rename deserves its own proposal.
>>>>> 
>>>>> -Joe
>>>> 
>>>> 
>>>> Its really unfortunate that the generics work is probably going to be 
>>>> deferred. When you really dive in to protocol-oriented programming and 
>>>> designing frameworks to be native Swift (taking advantage of Swift 
>>>> features) the existential problem comes up a lot and leads to sub-optimal 
>>>> designs, abandonment of type safety, or gobs of boilerplate.  
>>>> 
>>>> 
>>>> Russ
>>>> 
>>>> _______________________________________________
>>>> swift-evolution mailing list
>>>> [email protected] <mailto:[email protected]>
>>>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>>>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>> 
>>> _______________________________________________
>>> swift-evolution mailing list
>>> [email protected] <mailto:[email protected]>
>>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>> _______________________________________________
>> swift-evolution mailing list
>> [email protected] <mailto:[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