[swift-evolution] Proposal: Add scan, takeWhile, dropWhile, and iterate to the stdlib

Dany St-Amant dsa.mls at icloud.com
Wed Jan 13 19:54:08 CST 2016


The dropWhile sounds weird to me, I usually would see such functionality as a dropUntil; I discard stuff until I see what I want.
Your example below doesn’t use dropWhile, but skipWhile; which sounds a bit better that dropWhile as one skip what he doesn’t want.

What do the other languages use? A dropWhile, skipWhile or dropUntil concept?

Dany


> Le 11 janv. 2016 à 01:20, Kevin Ballard via swift-evolution <swift-evolution at swift.org> a écrit :
> 
> Here's a few toy examples, if it helps:
> 
> // list of all powers of 2 below some limit
> iterate(1, apply: { $0 * 2 }).takeWhile({ $0 < limit })
> 
> // first "word" of a string, skipping whitespace
> let cs = NSCharacterSet.whitespaceCharacterSet()
> String(str.unicodeScalars.skipWhile({ cs.longCharacterIsMember($0.value) })
>                          .takeWhile({ !cs.longCharacterIsMember($0.value) }))
> 
> // running total of an array of numbers
> numbers.scan(0, combine: +).dropFirst()
> 
> // infinite fibonacci sequence
> iterate((0,1), apply: { ($1, $0+$1) }).lazy.map({$1})
> 
> -Kevin Ballard
> 
>> On Mon, Dec 28, 2015, at 03:59 PM, Kevin Ballard wrote:
>> >
>> > ## Detailed design
>> >
>> > We add the following extension to SequenceType:
>> >
>> > extension SequenceType {
>> >     func scan<T>(initial: T, @noescape combine: (T, Self.Generator.Element) throws -> T) rethrows -> [T]
>> >     func dropWhile(@noescape dropElement: (Self.Generator.Element) throws -> Bool) rethrows -> [Self.Generator.Element]
>> >     func takeWhile(@noescape takeElement: (Self.Generator.Element) throws -> Bool) rethrows -> [Self.Generator.Element]
>> > }
>> >

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160113/d93b6773/attachment.html>


More information about the swift-evolution mailing list