> I don’t see how this:
> 
> protocol P {
>   type/*alias*/ A
> }
> 
> struct X : P {
>   struct A {}
> }
> 
> is fundamentally any different from:
> 
> protocol P {
>   func f()
> }
> 
> struct X : P {
>   func f() {}
> }
> 
> What am I missing?

I'd say it's the fact that adding an associated type turns a protocol into a 
frankenprotocol, and we don't want that to be cast upon innocent souls without 
a proper curse word (like "associatedtype").

Also, maybe some day we'll have normal type requirements — something that has 
to be defined in a protocol, but does not turn it into a frankenprotocol than 
nobody can use anymore. That would be an appropriate use of the normal-looking 
keywords.

A.

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

Reply via email to