> Am 18.05.2016 um 23:17 schrieb Austin Zheng via swift-evolution 
> <[email protected]>:
> 
> The order does not affect the semantic meaning of the existential. There is a 
> section in the proposal on how existentials are conceptually 'reduced' from 
> whatever form they take when the programmer types them in, please read it. I 
> am not proposing a macro system. The compiler does not do textual replacement 
> in order to flatten nested existential definitions.
> 
> This is also why it makes no sense to have a generic "Any<T, U>", because 
> such a type is identical to "Any<U, T>", which is not true for any other 
> generic type or aggregate type in Swift.

Shouldn’t that be a reason to use `any<>` (using a keyword `any`) instead of 
`Any<>`? Because `Any<>` would just look like/be a generic type with all normal 
expectations, e.g. `Any<T, U>` would *not* be equal to `Any<U, T>` which is 
different behavior from `protocol<>`, as I can write 

func foo(p: protocol<A, B>) -> protocol<B, A> {
    return p
}

-Thorsten
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to