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

Reply via email to