Here is a quick example that we would loose. [["hey"], ["what"]].flatten().joined(separator: “")
[["hey"], ["what"]].flatten() // ["hey", "what”] The way I think of it is flatten works on array of arrays while joined works on arrays of strings. I guess we could do this too [["hey"], ["what"]].joined(separator: []).joined(separator: "") > On Jul 24, 2016, at 5:29 PM, Jose Cheyo Jimenez <ch...@masters3d.com> wrote: > > -1 for this. To me there needs to be a difference between String (which is > not a normal collection) and other regular collections. > > In addition, I really don’t think this proposal has the needed strong support > for the change. > > > > >> On Jul 22, 2016, at 3:41 PM, Jacob Bandes-Storch via swift-evolution >> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote: >> >> Here's a proposal draft. Comments welcome: >> >> https://gist.github.com/jtbandes/7978dc1848f7c37eeaa8e9aba27c7325 >> <https://gist.github.com/jtbandes/7978dc1848f7c37eeaa8e9aba27c7325> >> >> On Fri, Jul 22, 2016 at 2:51 PM, Ben Rimmington <m...@benrimmington.com >> <mailto:m...@benrimmington.com>> wrote: >> >> > On 22 Jul 2016, at 20:43, Jacob Bandes-Storch <jtban...@gmail.com >> > <mailto:jtban...@gmail.com>> wrote: >> > >> >> On Fri, Jul 22, 2016 at 8:35 AM, Ben Rimmington <m...@benrimmington.com >> >> <mailto:m...@benrimmington.com>> wrote: >> >> >> >>> On 22 Jul 2016, at 02:46, Jacob Bandes-Storch wrote: >> >>> >> >>> In the swift-lang Slack channel, a few of us were discussing >> >>> joined(separator:) and realized that flatten() does almost exactly the >> >>> same thing. >> >>> >> >>> Is there interest in renaming flatten() to joined()? Since joined takes >> >>> a separator that's any Sequence, we can't have a default value for the >> >>> separator parameter, but we can have a variant of joined() with no >> >>> arguments. >> >> >> >> I'd like default separators for the joined() methods. >> >> >> >> <https://bugs.swift.org/browse/SR-1428 >> >> <https://bugs.swift.org/browse/SR-1428>> >> >> >> >> But renaming flatten() to joined() seems complicated. >> >> >> >> <https://github.com/apple/swift/blob/master/stdlib/public/core/Flatten.swift.gyb >> >> >> >> <https://github.com/apple/swift/blob/master/stdlib/public/core/Flatten.swift.gyb>> >> >> <https://github.com/apple/swift/blob/master/stdlib/public/core/Join.swift >> >> <https://github.com/apple/swift/blob/master/stdlib/public/core/Join.swift>> >> > >> > What makes it seem complicated? At the very least, one could just rename >> > the flatten() function. There might also be an opportunity to combine the >> > two files and delete some code from stdlib. >> >> There's only one joined() method (for a sequence of sequences): >> >> extension Sequence { >> func joined<Separator: Sequence>(separator: Separator) -> >> JoinedSequence<Self> >> } >> >> There are many flatten() methods (`where` clauses omitted for brevity): >> >> extension Sequence { >> func flatten() -> FlattenSequence<Self> >> } >> >> extension LazySequenceProtocol { >> func flatten() -> LazySequence<FlattenSequence<Self.Elements>> >> } >> >> extension LazyCollectionProtocol { >> func flatten() -> LazyCollection<FlattenCollection<Self.Elements>> >> } >> >> extension Collection { >> func flatten() -> FlattenCollection<Self> >> } >> >> extension BidirectionalCollection { >> func flatten() -> FlattenBidirectionalCollection<Self> >> } >> >> So it's not a simple one-to-one rename. >> >> When there's no `separator` argument, will FlattenIterator perform better >> than JoinedIterator? >> >> >> And what would happen to the flatMap() methods? Is flatten() a term of >> >> art? >> >> >> >> <https://github.com/apple/swift/blob/master/stdlib/public/core/FlatMap.swift >> >> >> >> <https://github.com/apple/swift/blob/master/stdlib/public/core/FlatMap.swift>> >> > >> > I'd say flatMap is more a "term of art" than flatten. "flatten" just >> > describes literally what is being done. Frankly I'm surprised it was never >> > named flattened(). Anyway, flatMap should stay. >> >> ## Future directions >> >> Will the flatMap(_:) methods also have flatMap(separator:_:) variants? >> >> That's an interesting idea. It seems to be purely additive, however, so I >> imagine it wouldn't happen until after Swift 3. >> >> >> -- Ben >> >> >> _______________________________________________ >> swift-evolution mailing list >> swift-evolution@swift.org <mailto:swift-evolution@swift.org> >> https://lists.swift.org/mailman/listinfo/swift-evolution >> <https://lists.swift.org/mailman/listinfo/swift-evolution>
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution