> On May 10, 2016, at 9:11 PM, Tyler Cloutier via swift-evolution > <swift-evolution@swift.org> wrote: > > >> On May 10, 2016, at 5:56 PM, Chris Lattner <clatt...@apple.com> wrote: >> >> >>> On May 10, 2016, at 4:13 PM, Cole Campbell via swift-evolution >>> <swift-evolution@swift.org> wrote: >>> >>> I agree that repeat { } is ambiguous because you have to look to the end >>> for a while clause to determine if it's infinite or not. >> >> Right, this is the downside that I see with “repeat {}”. > > > Not to beat a dead horse, but isn’t this also true of > > repeat { > > } while true > > and > > while true { > ... > ... > if condition { > break > } > }
In all the code I ever seen, infinite loop are seldom really forever, they must exit one day mainly for graceful exit of the application. So break statement are to be expected in all infinite loop. The question of the readability of a infinite loop is not about whether or not the loop can exit, but about the intent or goal of the loop. Here the 'while true' strongly advertise up front that the loop is to run as long as it can; while for the 'repeat', one must go to the end to get that intent. So for readable code, a forever loop should preferably be written as: while true { /* multi-line work */ } And never as: repeat { /* multi-line work */ } while true Removing the trailing 'while true' of the 'repeat' does not help with reading and quickly understanding the code, for that to occurs a keyword will need to be added to the repeat itself; like the 'repeat forever' which is longer than the plain good old 'while true' at the top. Dany >> >>> while true { } is preferable in that regard, but a compromise that I saw >>> mentioned is: >>> >>> repeat forever { } >> >> This would require taking “forever” as a keyword if we supported “repeat N >> {", something we wouldn’t want to do. >> >> Another option is to make it a statement modifier, which wouldn’t require >> taking it as a keyword (but also doesn’t read as well): >> >> forever repeat { } >> >> >> Personally, I don’t see this as a big enough improvement over “while true” >> to be worth introducing complexity for. > > If you are referring to “forever", I also don’t think that adding a new > keyword is an improvement over “while true”. > >> -Chris > > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution _______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution