<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=""><div class=""><div class=""><div class=""><font face="HelveticaNeue" class=""><b class="">Review of SE-0007</b></font></div><div class=""><font face="HelveticaNeue" class=""><b class=""><br class=""></b></font></div><div class=""><font face="HelveticaNeue" class=""><b class="">* What is your evaluation of the proposal?</b></font></div><div class=""><font face="HelveticaNeue" class=""><br class=""></font></div><div class=""><font face="HelveticaNeue" class="">I can understand how this change is controversial - however, I’m in favor of it.</font></div><div class=""><font face="HelveticaNeue" class=""><br class=""></font></div><div class=""><font face="HelveticaNeue" class=""><b class="">* Is the problem being addressed significant enough to warrant a change to Swift?</b></font></div><div class=""><font face="HelveticaNeue" class=""><br class=""></font></div><div class=""><font face="HelveticaNeue" class="">Many examples have been given on the list of for loops that look more complex or involve additional nesting once C-style for loops are eliminated. However, I couldn’t help thinking many of these examples are greatly complex in themselves - that using a functional syntax (even if it makes the line longer or has the sequence building moved to another function) serves to make the code intrinsically more readable and maintainable.</font></div><div class=""><font face="HelveticaNeue" class=""><br class=""></font></div><div class=""><font face="HelveticaNeue" class="">For example,&nbsp;</font></div><div class=""><font face="HelveticaNeue" class=""><br class=""></font></div><div class=""><div class=""><font face="HelveticaNeue" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>for i in (0..&lt;things.length).reverse() {&nbsp;… } is longer/more verbose, but is also very clear in purpose</font></div><div class=""><font face="HelveticaNeue" class=""><br class=""></font></div></div><div class="">For someone coming from C, for loop support may help them port their code quicker. However, for someone without C experience, the syntax and rules are different than the rest of the language (for instance, the for loop is the only construct which requires a semicolon for expression).</div><div class=""><br class=""></div><div class=""><font face="HelveticaNeue" class=""><b class="">* Does this proposal fit well with the feel and direction of Swift?</b></font></div><div class=""><font face="HelveticaNeue" class=""><br class=""></font></div><div class=""><font face="HelveticaNeue" class="">Yes.</font></div><div class=""><font face="HelveticaNeue" class=""><br class=""></font></div><div class=""><font face="HelveticaNeue" class="">With ++ and -- operators slated for removal, the main motivator for having for loop support (ease of&nbsp;porting C-dialect code) is greatly reduced.</font></div><div class=""><font face="HelveticaNeue" class=""><br class=""></font></div><div class=""><font face="HelveticaNeue" class="">There is a push to use functional concepts in Swift (avoiding terms like Monoids and Monads since the theory isn’t needed for usage). Every for loop I’ve ever seen is non-functional, and the availability of the feature pushes people toward imperative thinking and coding.</font></div><div class=""><font face="HelveticaNeue" class=""><br class=""></font></div><div class=""><div class=""><font face="HelveticaNeue" class=""><b class="">** Additional feedback on evaluation</b></font></div><div class=""><font face="HelveticaNeue" class=""><br class=""></font></div></div><div class=""><font face="HelveticaNeue" class="">I *wish* there was greater consistency with blocks and closures, so that for - in&nbsp;…&nbsp;{…} wasn’t required in addition to .forEach {…}.</font></div><div class=""><font face="HelveticaNeue" class=""><br class=""></font></div><div class=""><span style="font-family: HelveticaNeue;" class="">Some of the concepts given seem like they may warrant language use guidance (such as in TSPL book):</span></div><div class=""><font face="HelveticaNeue" class=""><br class=""></font></div><div class=""><div class=""><font face="HelveticaNeue" class=""><span class="Apple-tab-span" style="white-space: pre;">        </span>for i in 0..&lt;things.length {&nbsp;… }&nbsp;</font></div><div class=""><font face="HelveticaNeue" class=""><br class=""></font></div><div class=""><font face="HelveticaNeue" class="">should perhaps instead be&nbsp;</font></div><div class=""><br class=""></div><div class=""><font face="HelveticaNeue" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>for i in things.indices {&nbsp;… }</font></div></div><div class=""><br class=""></div><div class=""><font face="HelveticaNeue" class=""><b class="">* If you have you used other languages or libraries with a similar feature, how do you feel that this proposal compares to those?</b></font></div><div class=""><br class=""></div><div class="">The main language I’ve used without for loops is ruby. I honestly didn’t realize they were missing until another review stated so - once I moved away from using them, I’ve never been motivated to go back.</div><div class=""><br class=""></div><div class=""><font face="HelveticaNeue" class=""><b class="">* How much effort did you put into your review? A glance, a quick reading, or an in-depth study?</b></font></div><div class=""><br class=""></div></div></div><div class="">I’ve followed the mailing list discussion and looked at my own code.</div><div class=""><br class=""></div><div class="">-DW</div></body></html>