<html><body><div><br></div><div class="body-text-content" id="x-apple-maildrop-container">&nbsp;</div><div><span class="body-text-content"></span><br><span class="body-text-content"></span><div><blockquote type="cite"><div class="msg-quote"><div class="_stretch"><span class="body-text-content"> &nbsp; &nbsp; &nbsp;<a href="https://github.com/apple/swift-evolution/blob/master/proposals/0095-any-as-existential.md" data-mce-href="https://github.com/apple/swift-evolution/blob/master/proposals/0095-any-as-existential.md">https://github.com/apple/swift-evolution/blob/master/proposals/0095-any-as-existential.md</a><br><br> &nbsp; &nbsp;* What is your evaluation of the proposal?</span></div></div></blockquote></div><div><span><br data-mce-bogus="1"></span></div><div><span>+1. This proposal is a first step for generalized existentials.</span></div><div><span><br data-mce-bogus="1"></span></div><div><span>-1 for Any&lt;&gt;<br data-mce-bogus="1"></span></div><div><span>+1 for any&lt;&gt;<br data-mce-bogus="1"></span></div><div><span>Reason: any&lt;&gt; is not a generic type and in the order of the type parameters supplied to any&lt;&gt; is not important which is very different from generic argument lists<br data-mce-bogus="1"></span></div><div><span><br data-mce-bogus="1"></span></div><div><span>An alternative might by a completely different syntax not using angled brackets which enclose type parameter lists, e.g. any[P, Q] or Any[P, Q] or P &amp; Q. <br data-mce-bogus="1"></span></div><div><span>The latter makes it difficult to add constraints which are essential for extending this to existentials.<br data-mce-bogus="1"></span></div><div><span>Of course constraints could just be appended, e.g. `P &amp; Q where ...` which might have to be enclosed in parenthesis in some situations.<br data-mce-bogus="1"></span></div><div><span><br data-mce-bogus="1"></span></div><div><span>-Thorsten<br data-mce-bogus="1"></span></div><div><span> <br></span><blockquote type="cite"><div class="msg-quote"><div class="_stretch"><span class="body-text-content">&nbsp;&nbsp; * Is the problem being addressed significant enough to warrant a change to Swift?</span></div></div></blockquote></div><div><span><br data-mce-bogus="1"></span></div><div><span>Yes. Generalized existentials are very important for Swift and this is an enabler.</span></div><div><span> <br></span><blockquote type="cite"><div class="msg-quote"><div class="_stretch"><span class="body-text-content"><br> &nbsp; &nbsp; &nbsp;* Does this proposal fit well with the feel and direction of Swift?</span></div></div></blockquote></div><div><span><br data-mce-bogus="1"></span></div><div><span>Yes.</span></div><div><span> <br></span><blockquote type="cite"><div class="msg-quote"><div class="_stretch"><span class="body-text-content"><br> &nbsp; &nbsp; &nbsp;* If you have used other languages or libraries with a similar feature, how do you feel that this proposal compares to those?</span></div></div></blockquote></div><div><span><br data-mce-bogus="1"></span></div><div><span>Ceylon uses "&amp;" as type operator for type intersections which is effectively the same as any&lt;&gt;, i.e. in Ceylon you would write `P &amp; Q` instead of `any&lt;P, Q&gt;`. <br></span></div><div><span>The drawback there is that it might be more difficult to add constraints. <br data-mce-bogus="1"></span></div><div><span><br></span><blockquote type="cite"><div class="msg-quote"><div class="_stretch"><span class="body-text-content"><br> &nbsp;* How much effort did you put into your review? A glance, a quick reading, or an in-depth study?</span></div></div></blockquote></div><div><span><br data-mce-bogus="1"></span></div><div><span>In depth study and participation in the discussion.</span></div><div><span><br data-mce-bogus="1"></span></div><div><span>-Thorsten</span></div></div></body></html>