<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=""><br class=""><div><blockquote type="cite" class=""><div class="">On 25 Jul 2016, at 09:10, Chris Lattner via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">The review of "SE-0133: Rename `flatten()` to `joined()`" begins now and runs through July 26. &nbsp;Apologies for the short review cycle, but we’re right up against the end of source breaking changes for Swift 3. &nbsp;The proposal is available here:<br class=""><br class=""><span class="Apple-tab-span" style="white-space:pre">        </span><a href="https://github.com/apple/swift-evolution/blob/master/proposals/0133-rename-flatten-to-joined.md" class="">https://github.com/apple/swift-evolution/blob/master/proposals/0133-rename-flatten-to-joined.md</a><br class=""><br class=""><span class="Apple-tab-span" style="white-space:pre">        </span>* What is your evaluation of the proposal?<br class=""></div></div></blockquote><div><br class=""></div><div>+1, this makes sense. The functions are very closely related, and while we have "flatten" in `flatMap`, is isn't unprecedented to call the joining operation `join` instead of `flatten`.</div><div><br class=""></div><div>Flatten also somewhat suffers from the expectation that it would flatten arbitrary depths of nestings down to just one. (That would be absurd in Swift's type system, but is precedented in e.g.&nbsp;<a href="http://clojure.github.io/clojure/clojure.core-api.html#clojure.core/flatten" class="">Clojure</a>.) The word "join" instead sounds like a more 1-dimensional operation, and thus decreases the minor surprise factor.</div><div><br class=""></div><div>It's also nice that `.joined(separator:)` can be simplified down to `.joined()` when the default separator is wanted. And I'd say the empty collection is an obvious choice for default in here.</div><br class=""><blockquote type="cite" class=""><div class=""><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>* Is the problem being addressed significant enough to warrant a change to Swift?<br class=""></div></div></blockquote><div><br class=""></div><div>Yes, it makes the function easier to find.</div><br class=""><blockquote type="cite" class=""><div class=""><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>* Does this proposal fit well with the feel and direction of Swift?<br class=""></div></div></blockquote><div><br class=""></div><div>Yes.</div><br class=""><blockquote type="cite" class=""><div class=""><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>* If you have used other languages or libraries with a similar feature, how do you feel that this proposal compares to those?<br class=""></div></div></blockquote><div><br class=""></div><div>Yes. E.g.&nbsp;<a href="https://hackage.haskell.org/package/base-4.9.0.0/docs/Control-Monad.html#v:join" class="">Haskell calls it `join`</a>.</div><br class=""><blockquote type="cite" class=""><div class=""><div class=""><span class="Apple-tab-span" style="white-space:pre">        </span>* How much effort did you put into your review? A glance, a quick reading, or an in-depth study?<br class=""></div></div></blockquote><div><br class=""></div><div>Quick reading.</div></div><br class=""><div class="">— Pyry</div><div class=""><br class=""></div></body></html>