> On May 10, 2016, at 9:11 PM, Tyler Cloutier via swift-evolution
> <[email protected]> wrote:
>
>
>> On May 10, 2016, at 5:56 PM, Chris Lattner <[email protected]> wrote:
>>
>>
>>> On May 10, 2016, at 4:13 PM, Cole Campbell via swift-evolution
>>> <[email protected]> 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
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution