<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Thank you for the effort David, this is great!<div class=""><br class=""></div><div class="">Considering this example:</div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 02 May 2016, David Hart &lt;<a href="mailto:david@hartbit.com" class="">david@hartbit.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><span style="color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; background-color: rgb(255, 255, 255);" class="">For example, here is the same function declaration (…) after the change:&nbsp;</span></div><div class=""><div class="highlight highlight-source-swift" style="box-sizing: border-box; margin-bottom: 16px; color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; background-color: rgb(255, 255, 255);"><pre style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 14px; margin-top: 0px; margin-bottom: 0px; line-height: 1.45; 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-wrap: normal; word-break: normal;" class=""><span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">func</span> <span class="pl-en" style="box-sizing: border-box; color: rgb(121, 93, 163);">anyCommonElements</span>&lt;T <span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">:</span> <span class="pl-c1" style="box-sizing: border-box; color: rgb(0, 134, 179);">SequenceType</span>, U <span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">:</span> <span class="pl-c1" style="box-sizing: border-box; color: rgb(0, 134, 179);">SequenceType</span>&gt;(lhs: T, <span class="pl-en" style="box-sizing: border-box; color: rgb(121, 93, 163);">_</span> <span class="pl-smi" style="box-sizing: border-box;">rhs</span>: U) <span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">-&gt;</span> <span class="pl-c1" style="box-sizing: border-box; color: rgb(0, 134, 179);">Bool</span> where
    T<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">.</span>Generator<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">.</span>Element: <span class="pl-c1" style="box-sizing: border-box; color: rgb(0, 134, 179);">Equatable</span>,
    T<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">.</span>Generator<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">.</span>Element <span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">==</span> U<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">.</span>Generator<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">.</span>Element
{
    <span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">...</span>
}</pre></div></div></div></div></blockquote><div>I originally had the opinion that this should be further changed for consistency into the following form:</div><div><br class=""></div><div><pre style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 14px; margin-top: 0px; margin-bottom: 0px; line-height: 1.45; 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-wrap: normal; word-break: normal; color: rgb(51, 51, 51);" class=""><span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">func</span> <span class="pl-en" style="box-sizing: border-box; color: rgb(121, 93, 163);">anyCommonElements</span>&lt;T, U&gt;(lhs: T, <span class="pl-en" style="box-sizing: border-box; color: rgb(121, 93, 163);">_</span> <span class="pl-smi" style="box-sizing: border-box;">rhs</span>: U) <span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">-&gt;</span> <span class="pl-c1" style="box-sizing: border-box; color: rgb(0, 134, 179);">Bool</span> where
    T <span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">:</span> <span class="pl-c1" style="box-sizing: border-box; color: rgb(0, 134, 179);">SequenceType</span>,
    U <span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">:</span> <span class="pl-c1" style="box-sizing: border-box; color: rgb(0, 134, 179);">SequenceType</span>,
    T<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">.</span>Generator<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">.</span>Element <span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">:</span> <span class="pl-c1" style="box-sizing: border-box; color: rgb(0, 134, 179);">Equatable</span>,
    T<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">.</span>Generator<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">.</span>Element <span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">==</span> U<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">.</span>Generator<span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">.</span>Element
{
    <span class="pl-k" style="box-sizing: border-box; color: rgb(167, 29, 93);">...</span>
}</pre><div class="">However, I do agree now that in the simple case highlighted below it makes no sense to use the <b class="">where</b> clause at all:</div></div><br class=""><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><p style="box-sizing: border-box; margin-top: 0px; margin-bottom: 16px; color: rgb(51, 51, 51); font-family: 'Helvetica Neue', Helvetica, 'Segoe UI', Arial, freesans, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 16px; background-color: rgb(255, 255, 255);" class="">It was also proposed to remove the simple inheritance constraints from the generic parameter list, but several arguments were brought up that <b class="">it would complicate declarations of simple generics which only needed inheritance constraints</b>.</p></div></div></div></blockquote></div>Of course, the proposal doesn't <i class="">prevent</i> anyone from moving all inheritance constraints into the <b class="">where</b> clause, so maybe we should point out that it's also possible to further simplify the first line of function declarations that way. It just remains a stylistic choice left for the developer to choose.</div><div class="">
<br class=""></div><div class="">Anyway, +1! Did you make a pull request already?</div><div class=""><br class=""></div><div class="">— Pyry</div><div class=""><br class=""></div></body></html>