Having loosely followed this discussion, the way I'm thinking of ‘closed’ is as 
a modifier which would let you switch over something from outside the module in 
which it is declared.

From outside the declaring module:
• A closed enum's cases can be exhaustively switched.
• A closed protocol's conforming types can be exhaustively switched.
• A closed class's subclasses can be exhaustively switched.

If this is correct, I can't help but think ‘closed’ is describing something 
subtly different in each case - picking and choosing the ‘important’ 
relationship for each type, while protocols already have a subtyping 
relationship, and it sounds like there's possibility for enum subtyping in the 
future.

I'd rather keep ‘open’ (and a potential future ‘closed’) purely describing the 
subtyping relationship, and have some other means of labelling conformance and 
cases as switchable.
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to