You may want to take a peek here: 
https://gist.github.com/erica/a51a981ee0352235204692affa959307

-- E

> On Apr 13, 2016, at 8:52 AM, Hans Huck via swift-evolution 
> <[email protected]> wrote:
> 
> Rationale:
>  
> Swift's For-In-loop is fine, as long as you don't need an iteration step size 
> other than 1/-1, in which case it becomes unexpectedly inconsistent and 
> unwieldy.
>  
> for i in 1...10
> for i in reverse(10...1)
> for i in stride(from:1, through:10, by:3)
> or even
> for i in 1.stride(through:10, by:3)
>  
> The above sequence is not only confusing for teaching purposes/beginners 
> (first lesson: protocols. really?), but also unnecessarily bulky for everyday 
> use. It's a For-loop, one of the most basic and frequently used structures in 
> any language -- please let's make it pithy.
>  
> 
> Comparison:
>  
> Currently, even the C-style For-loop we are just about to get rid of could be 
> argued to be more concise and consistent, but significantly more so are the 
> likes of
>  
> # Python
> for i in range(1, 10, 3):
>  
> -- Lua
> for i = 1, 10, 3
>  
> ' Basic
> for i = 1 to 10 step 3
>  
> (* Modula-2 *)
> for i := 1 to 10 by 3
>  
> // Chapel
> for i in 1..10 by 3
>  
> or any other remotely relevant non-C-style language that allows For-loops 
> with an altered step size.
>  
> While there are other issues like having to use reverse(1...10) instead of 
> simply 10...1, (which compiles, but doesn't run, even when using literals -- 
> why?) none of it goes against the grain as much as being forced to type out 
> stride(boiboiboilerplate) for a simple iteration.
>  
> 
> Suggestion(s):
>  
> A) Add keyword "by" as syntactic sugar, used as in Modula/Chapel (and tip our 
> hat to Algol 68):
>  
> // Swift
> for i in 1...10 by 3
> for i in reverse(1...10) by -3
>  
> or even better yet (if feasible):
>  
> B)
> for i in 1...10 by 3
> for i in 10...1 by -3
> 
> Please comment, and thanks everyone for reading.
>  
> -- Hans
>  
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to