This is unfortunate, because then the meaning of "existential" and 
"non-existential" in Swift are just the opposite of their respective meaning in standard 
terminology :-(



-Thorsten




Am 25. Mai 2016 um 14:27 schrieb Brent Royal-Gordon <br...@architechies.com>:


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
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to