[swift-evolution] Change `repeat` to loop indefinitely if no while clause is present

Erica Sadun erica at ericasadun.com
Tue May 10 15:09:22 CDT 2016


I do not see sufficiently measurable benefits to this proposal to add it to the language. 
It's easy enough to roll your own `repeatForever` function with trailing closure.

I also want to thank you for bring it up on-list. Not every idea is right for Swift but it's
always refreshing to see innovative thoughts added to the discussion. Please do not be 
discouraged by the generally negative feedback on this particular idea.

-- Erica

> On May 10, 2016, at 1:27 AM, Nicholas Maccharoli via swift-evolution <swift-evolution at swift.org> wrote:
> 
> ​Swift Evolution ​Community,
> 
> Currently writing an infinite loop in swift looks either something like this:
> 
>     while true {
>         if ... { break }
>         //...
>     }
> 
> Or this:
> 
>     repeat {
>         if ... { break }
>         //...
>     } while true
> 
> But I think it might be best to change the syntax / behaviour of `repeat` to loop 
> indefinitely if no trailing while clause is present:
> 
>     repeat {
>         if ... { break }
>         //...
>     }
> 
> while still allowing a trailing `while` clause as in:
> 
>     repeat { 
>         foo += bar
>     } while foo.count < limit 
> 
> I also want to propose that it should be a compile time error to use single `Bool` constants as while loop conditions, so no more `while true { ... }` it would become `repeat { ... }`
> 
> I was thinking of drafting a short proposal if there was enough positive feedback. 
> 
> How does it sound?
> 
> - Nick 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

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


More information about the swift-evolution mailing list