> AFAIK an existential type is a type T with type parameters that are still 
> abstract (see for example 
> https://en.wikipedia.org/wiki/Type_system#Existential_types), i.e. have not 
> been assigned concrete values.

My understanding is that, in Swift, the instance used to store something whose 
concrete type is unknown (i.e. is still abstract), but which is known to 
conform to some protocol, is called an "existential". Protocols with associated 
values cannot be packed into normal existentials because, even though we know 
that the concrete type conforms to some protocol, the associated types 
represent additional unknowns, and Swift cannot be sure how to translate uses 
of those unknown types into callable members. Hence, protocols with associated 
types are sometimes called "non-existential".

If I am misusing the terminology in this area, please understand that that's 
what I mean when I use that word.

-- 
Brent Royal-Gordon
Architechies

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

Reply via email to