<div dir="ltr">Given that the type will/must be defined, implicitly or explicitly, by the adopter of a protocol, what about &quot;adopterType&quot;?<div><br></div><div>Mike</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Dec 21, 2015 at 11:33 AM, Chris Lattner <span dir="ltr">&lt;<a href="mailto:clattner@apple.com" target="_blank">clattner@apple.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><span class=""><br><div><blockquote type="cite"><div>On Dec 20, 2015, at 8:27 AM, Stephen Celis via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:</div><br><div><div style="word-wrap:break-word"><div><blockquote type="cite"><div>On Dec 19, 2015, at 11:14 PM, Dave Abrahams via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:</div><br><div><blockquote type="cite" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">On Dec 19, 2015, at 5:09 PM, Brent Royal-Gordon via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br><br>I don&#39;t think `required` captures the intended meaning *at all*. You&#39;re not required to declare the type of a &quot;required typealias&quot;—it&#39;s often, perhaps even usually, inferred.<br></blockquote><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">No, but it is required to exist and can&#39;t always be inferred.  It puts a constraint on the type that is declared to conform.  This is a requirement in exactly the same sense that other protocol requirements are requirements.  Notably operator requirements may be satisfied &quot;implicitly&quot; by declarations that already exist, but they are still requirements.</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"></div></blockquote><div><br></div><div>I think reusing &quot;required&quot; here (where &quot;typealias&quot; has already been reused) could make the concept of associated types more opaque to new users.</div></div></div></div></blockquote><br></div></span><div>I agree.  There are a couple of potentially confusing issues here:</div><div><br></div><div>- In principle, all of the declarations in the protocol are “requirements” that a type needs to fulfill to conform to the protocol.</div><div>- Except for optional requirements in @objc protocols.</div><div>- Except for requirements with default implementations (which currently cannot be written inline in the protocol, but should be allowed some day).  Today’s typealiases can have &quot;default implementations” as well.</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>-Chris</div><div><br></div><br></font></span></div></blockquote></div><br></div>