<div dir="ltr">I… like this syntax but I have to admit that I am confused about <div>```protocol IntSequence : Sequence where Iterator.Element == Int {<br>    ...<br>}</div><div>```</div><div>I think that this example needs a better subtype/subprotocol to motivate the feature. This particular type seems more like a constrained typealias example to me. An example that I think might work is </div><div><br></div><div><div>```protocol FloatingPointSignal : Sequence where Iterator.Element == Double {<br>    var sampleRate: Double</div><div>    ...<br>}</div><div>```</div></div><div>because there is behavior/state to add in the subprotocol. </div><div><br></div><div><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Sep 21, 2016 at 2:50 PM, David Hart via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div style="word-wrap:break-word">Hello mailing list,<div><br></div><div>Since the following proposal was discussed before the release of Swift 3 and then delayed, I’m opening it up again for a short pre-review before to get some additional feedback before it can be merged.</div><div><br></div><div>Web link: <a href="https://github.com/hartbit/swift-evolution/blob/4107087d82eacc35538f5af0d97ffb80dfa4f998/proposals/XXXX-associated-types-constraints.md" target="_blank">https://github.com/<wbr>hartbit/swift-evolution/blob/<wbr>4107087d82eacc35538f5af0d97ffb<wbr>80dfa4f998/proposals/XXXX-<wbr>associated-types-constraints.<wbr>md</a></div><div><br></div><div><h1 style="margin:0px 0px 16px;line-height:1.25;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238,238,238);color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;background-color:rgb(255,255,255)">Permit where clauses to constrain associated types</h1><ul style="padding-left:2em;margin-top:0px;margin-bottom:16px;color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px;background-color:rgb(255,255,255)"><li>Proposal: <a href="https://github.com/hartbit/swift-evolution/blob/4107087d82eacc35538f5af0d97ffb80dfa4f998/proposals/NNNN-associated-types-constraints.md" style="background-color:transparent;color:rgb(64,120,192);text-decoration:none" target="_blank">SE-NNNN</a></li><li style="margin-top:0.25em">Authors: <a href="https://github.com/hartbit" style="background-color:transparent;color:rgb(64,120,192);text-decoration:none" target="_blank">David Hart</a>, <a href="https://github.com/jtbandes" style="background-color:transparent;color:rgb(64,120,192);text-decoration:none" target="_blank">Jacob Bandes-Storch</a>, <a href="https://github.com/DougGregor" style="background-color:transparent;color:rgb(64,120,192);text-decoration:none" target="_blank">Doug Gregor</a></li><li style="margin-top:0.25em">Review Manager: TBD</li><li style="margin-top:0.25em">Status: <span style="font-weight:600">Awaiting review</span></li></ul><h2 style="margin-top:24px;margin-bottom:16px;line-height:1.25;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238,238,238);color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;background-color:rgb(255,255,255)"><a href="https://github.com/hartbit/swift-evolution/blob/4107087d82eacc35538f5af0d97ffb80dfa4f998/proposals/XXXX-associated-types-constraints.md#introduction" style="background-color:transparent;color:rgb(64,120,192);text-decoration:none;float:left;padding-right:4px;line-height:1" target="_blank"><u></u><u></u><u></u><u></u></a>Introduction</h2><p style="margin-top:0px;margin-bottom:16px;color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px;background-color:rgb(255,255,255)">This proposal seeks to introduce a <code style="font-family:consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:14px;padding:0.2em 0px;margin:0px;background-color:rgba(0,0,0,0.0392157);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px">where</code> clause to associated type declarations and improvements to protocol constraints to bring associated types the same expressive power as generic type parameters.</p><p style="margin-top:0px;margin-bottom:16px;color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px;background-color:rgb(255,255,255)">This proposal was discussed twice on the Swift Evolution list in the following threads:</p><ul style="padding-left:2em;margin-top:0px;margin-bottom:16px;color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px;background-color:rgb(255,255,255)"><li><a href="https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160411/014667.html" style="background-color:transparent;color:rgb(64,120,192);text-decoration:none" target="_blank">[Completing Generics] Arbitrary requirements in protocols</a></li><li style="margin-top:0.25em">[Proposal] More Powerful Constraints for Associated Types<ul style="padding-left:2em;margin-top:0px;margin-bottom:0px"><li><a href="https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160418/015625.html" style="background-color:transparent;color:rgb(64,120,192);text-decoration:none" target="_blank">Week #1</a></li><li style="margin-top:0.25em"><a href="https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160425/015753.html" style="background-color:transparent;color:rgb(64,120,192);text-decoration:none" target="_blank">Week #2</a></li><li style="margin-top:0.25em"><a href="https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160502/016354.html" style="background-color:transparent;color:rgb(64,120,192);text-decoration:none" target="_blank">Week #3</a></li></ul></li></ul><h2 style="margin-top:24px;margin-bottom:16px;line-height:1.25;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238,238,238);color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;background-color:rgb(255,255,255)"><a href="https://github.com/hartbit/swift-evolution/blob/4107087d82eacc35538f5af0d97ffb80dfa4f998/proposals/XXXX-associated-types-constraints.md#motivation" style="background-color:transparent;color:rgb(64,120,192);text-decoration:none;float:left;padding-right:4px;line-height:1" target="_blank"><u></u><u></u><u></u><u></u></a>Motivation</h2><p style="margin-top:0px;margin-bottom:16px;color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px;background-color:rgb(255,255,255)">Currently, associated type declarations can only express simple inheritance constraints and not the more sophisticated constraints available to generic types with the <code style="font-family:consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:14px;padding:0.2em 0px;margin:0px;background-color:rgba(0,0,0,0.0392157);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px">where</code> clause. Some designs, including many in the Standard Library, require more powerful constraints for associated types to be truly elegant. For example, the <code style="font-family:consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:14px;padding:0.2em 0px;margin:0px;background-color:rgba(0,0,0,0.0392157);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px">SequenceType</code> protocol could be declared as follows if the current proposal was accepted:</p><div style="margin-bottom:16px;color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px;background-color:rgb(255,255,255)"><pre style="font-family:consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:14px;margin-top:0px;margin-bottom:0px;line-height:1.45;word-wrap:normal;padding:16px;overflow:auto;background-color:rgb(247,247,247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-break:normal"><span style="color:rgb(167,29,93)">protocol</span> Sequence {
    associatedtype Iterator <span style="color:rgb(167,29,93)">:</span> IteratorProtocol
    associatedtype SubSequence <span style="color:rgb(167,29,93)">:</span> Sequence <span style="color:rgb(167,29,93)">where</span> SubSequence<span style="color:rgb(167,29,93)">.</span>Iterator<span style="color:rgb(167,29,93)">.</span>Element <span style="color:rgb(167,29,93)">==</span> Iterator<span style="color:rgb(167,29,93)">.</span>Element
    <span style="color:rgb(167,29,93)">...</span>
}</pre></div><h2 style="margin-top:24px;margin-bottom:16px;line-height:1.25;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238,238,238);color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;background-color:rgb(255,255,255)"><a href="https://github.com/hartbit/swift-evolution/blob/4107087d82eacc35538f5af0d97ffb80dfa4f998/proposals/XXXX-associated-types-constraints.md#detailed-design" style="background-color:transparent;color:rgb(64,120,192);text-decoration:none;float:left;padding-right:4px;line-height:1" target="_blank"><u></u><u></u><u></u><u></u></a>Detailed Design</h2><p style="margin-top:0px;margin-bottom:16px;color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px;background-color:rgb(255,255,255)">First of all, this proposal modifies the grammar for a protocol&#39;s associated types to the following:</p><p style="margin-top:0px;margin-bottom:16px;color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px;background-color:rgb(255,255,255)"><em>protocol-associated-type-<wbr>declaration</em> → <em>attributes<span style="font-size:12px;line-height:0;vertical-align:baseline">opt</span></em> <em>ac<wbr>cess-level-modifier<span style="font-size:12px;line-height:0;vertical-align:baseline">opt</span></em> <span style="font-weight:600">associa<wbr>tedtype</span> <em>typealias-name</em> ­<em>type-<wbr>inheritance-clause­<span style="font-size:12px;line-height:0;vertical-align:baseline">opt</span></em> <em>typeali<wbr>as-assignment­<span style="font-size:12px;line-height:0;vertical-align:baseline">opt</span></em> <em>requirement-<wbr>clause<span style="font-size:12px;line-height:0;vertical-align:baseline">opt</span></em></p><p style="margin-top:0px;margin-bottom:16px;color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px;background-color:rgb(255,255,255)">The new requirement-clause is then used by the compiler to validate the associated types of conforming types.</p><p style="margin-top:0px;margin-bottom:16px;color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px;background-color:rgb(255,255,255)">Secondly, the proposal also allows protocols to use the associated types of their conforming protocols in their declaration <code style="font-family:consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:14px;padding:0.2em 0px;margin:0px;background-color:rgba(0,0,0,0.0392157);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px">where</code> clause as below:</p><div style="margin-bottom:16px;color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px;background-color:rgb(255,255,255)"><pre style="font-family:consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:14px;margin-top:0px;margin-bottom:0px;line-height:1.45;word-wrap:normal;padding:16px;overflow:auto;background-color:rgb(247,247,247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-break:normal"><span style="color:rgb(167,29,93)">protocol</span> IntSequence <span style="color:rgb(167,29,93)">:</span> Sequence <span style="color:rgb(167,29,93)">where</span> Iterator<span style="color:rgb(167,29,93)">.</span>Element <span style="color:rgb(167,29,93)">==</span> <span style="color:rgb(0,134,179)">Int</span> {
    <span style="color:rgb(167,29,93)">...</span>
}</pre></div><p style="margin-top:0px;margin-bottom:16px;color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px;background-color:rgb(255,255,255)">Name lookup semantics in the protocol declaration <code style="font-family:consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:14px;padding:0.2em 0px;margin:0px;background-color:rgba(0,0,0,0.0392157);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px">where</code> clause only looks at associated types in the parent protocols. For example, the following code would cause an error:</p><div style="margin-bottom:16px;color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px;background-color:rgb(255,255,255)"><pre style="font-family:consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:14px;margin-top:0px;margin-bottom:0px;line-height:1.45;word-wrap:normal;padding:16px;overflow:auto;background-color:rgb(247,247,247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-break:normal"><span style="color:rgb(167,29,93)">protocol</span> SomeSequence <span style="color:rgb(167,29,93)">:</span> Sequence <span style="color:rgb(167,29,93)">where</span> Counter <span style="color:rgb(167,29,93)">:</span> SomeProtocol { <span style="color:rgb(150,152,150)">// error: Use of undefined associated type &#39;Counter&#39;</span>
    associatedtype Counter
}</pre></div><p style="margin-top:0px;margin-bottom:16px;color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px;background-color:rgb(255,255,255)">But instead should be written on the associated type itself:</p><div style="margin-bottom:16px;color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px;background-color:rgb(255,255,255)"><pre style="font-family:consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:14px;margin-top:0px;margin-bottom:0px;line-height:1.45;word-wrap:normal;padding:16px;overflow:auto;background-color:rgb(247,247,247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-break:normal"><span style="color:rgb(167,29,93)">protocol</span> IntSequence <span style="color:rgb(167,29,93)">:</span> Sequence {
    associatedtype Counter <span style="color:rgb(167,29,93)">:</span> SomeProtocol
}</pre></div><h2 style="margin-top:24px;margin-bottom:16px;line-height:1.25;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238,238,238);color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;background-color:rgb(255,255,255)"><a href="https://github.com/hartbit/swift-evolution/blob/4107087d82eacc35538f5af0d97ffb80dfa4f998/proposals/XXXX-associated-types-constraints.md#effect-on-abi-stability" style="background-color:transparent;color:rgb(64,120,192);text-decoration:none;float:left;padding-right:4px;line-height:1" target="_blank"><u></u><u></u><u></u><u></u></a>Effect on ABI Stability</h2><p style="margin-top:0px;margin-bottom:16px;color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px;background-color:rgb(255,255,255)">As mentioned previously, there are a number of places in the standard library where this feature would be adopted (such as the <code style="font-family:consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:14px;padding:0.2em 0px;margin:0px;background-color:rgba(0,0,0,0.0392157);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px">SubSequence.Iterator.<wbr>Element == Iterator.Element</code> example), each of which will change the mangling of any generic function/type that makes use of them.</p><h2 style="margin-top:24px;margin-bottom:16px;line-height:1.25;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238,238,238);color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;background-color:rgb(255,255,255)"><a href="https://github.com/hartbit/swift-evolution/blob/4107087d82eacc35538f5af0d97ffb80dfa4f998/proposals/XXXX-associated-types-constraints.md#alternatives" style="background-color:transparent;color:rgb(64,120,192);text-decoration:none;float:left;padding-right:4px;line-height:1" target="_blank"><u></u><u></u><u></u><u></u></a>Alternatives</h2><p style="margin-top:0px;margin-bottom:16px;color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px;background-color:rgb(255,255,255)">Douglas Gregor argues that the proposed syntax is redundant when adding new constraints to an associated type declared in a parent protocol and proposes another syntax: </p><div style="margin-bottom:16px;color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px;background-color:rgb(255,255,255)"><pre style="font-family:consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:14px;margin-top:0px;margin-bottom:0px;line-height:1.45;word-wrap:normal;padding:16px;overflow:auto;background-color:rgb(247,247,247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-break:normal"><span style="color:rgb(167,29,93)">protocol</span> Collection <span style="color:rgb(167,29,93)">:</span> Sequence {
    <span style="color:rgb(167,29,93)">where</span> SubSequence <span style="color:rgb(167,29,93)">:</span> Collection
}</pre></div><p style="margin-top:0px;margin-bottom:16px;color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px;background-color:rgb(255,255,255)">But as Douglas notes himself, that syntax is ambiguous since we adopted the generic <code style="font-family:consolas,&#39;liberation mono&#39;,menlo,courier,monospace;font-size:14px;padding:0.2em 0px;margin:0px;background-color:rgba(0,0,0,0.0392157);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px">where</code> clause at the end of declarations of the following proposal: <a href="https://github.com/apple/swift-evolution/blob/master/proposals/0081-move-where-expression.md" style="background-color:transparent;color:rgb(64,120,192);text-decoration:none" target="_blank">SE-0081: Move where clause to end of declaration</a>. For those reasons, it might be wiser not to introduce the shorthand syntax.</p><h2 style="margin-top:24px;margin-bottom:16px;line-height:1.25;padding-bottom:0.3em;border-bottom-width:1px;border-bottom-style:solid;border-bottom-color:rgb(238,238,238);color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;background-color:rgb(255,255,255)"><a href="https://github.com/hartbit/swift-evolution/blob/4107087d82eacc35538f5af0d97ffb80dfa4f998/proposals/XXXX-associated-types-constraints.md#acknowledgements" style="background-color:transparent;color:rgb(64,120,192);text-decoration:none;float:left;padding-right:4px;line-height:1" target="_blank"><u></u><u></u><u></u><u></u></a>Acknowledgements</h2><div style="margin-top:0px;color:rgb(51,51,51);font-family:-apple-system,blinkmacsystemfont,&#39;segoe ui&#39;,roboto,helvetica,arial,sans-serif,&#39;apple color emoji&#39;,&#39;segoe ui emoji&#39;,&#39;segoe ui symbol&#39;;font-size:16px;background-color:rgb(255,255,255);margin-bottom:0px">Thanks to Dave Abrahams and Douglas Gregor for taking the time to help me through this proposal.</div></div></div><br>______________________________<wbr>_________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/<wbr>mailman/listinfo/swift-<wbr>evolution</a><br>
<br></blockquote></div><br></div></div></div>