[swift-evolution] Proposal: Sealed protocols

Joe Groff jgroff at apple.com
Thu Dec 3 17:13:08 CST 2015


> On Dec 3, 2015, at 2:59 PM, Felix Gabel <felix.gabel at me.com> wrote:
> 
> Hey everyone,
> 
> I hereby propose adding a ’sealed’ modifier for protocols to enable library developers to declare protocols that can be only conformed to in the scope of the library itself. This is similar to a ’sealed trait’ in Scala with the difference that it does not limit the protocol to be only applicable in the file it is declared in.
> 
> Example:
> 
> public sealed protocol FooType {
>    // this protocol can be conformed to only in scope of the library itself
>    // it can NOT be conformed to by any object declared outside the library
> }
> 
> What do you think?

My first reaction is that enums already provide a way to model closed sum types. Enums do have some syntactic disadvantages compared to protocol types, since there's no automatic subtyping with enums like there are with protocols, but it might be worth considering ways we can improve that rather than adding redundant language features.

-Joe


More information about the swift-evolution mailing list