> On 22 Jul 2016, at 20:43, Jacob Bandes-Storch <jtban...@gmail.com> wrote: > >> On Fri, Jul 22, 2016 at 8:35 AM, Ben Rimmington <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> >> >> 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/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> > > 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? -- Ben _______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution