The only advantage that I see if of a repeat without a while true, is that the
compiler could check for the presence of a break or give a warning
repeat {
//code
if (check) {break} //will be required to avoid a warning
}
repeat {
//code
//the user could forget to add a if break
} while true
> On May 10, 2016, at 4:50 PM, Xiaodi Wu via swift-evolution
> <[email protected]> wrote:
>
>
>
> On Tue, May 10, 2016 at 4:46 PM, Tyler Cloutier <[email protected]
> <mailto:[email protected]>> wrote:
>
>> On May 10, 2016, at 2:34 PM, Xiaodi Wu <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>> I think, on the contrary, it's missing the point utterly. It's up to those
>> proposing a new feature to justify its addition in light of what's already
>> here, and it's up to those proposing the removal of a feature to justify why
>> it should be removed.
>>
>> Certainly no one is proposing the removal of the while loop. Currently, the
>> One Obvious Way of making an infinite loop is `while true`, and it is up to
>> the proponents to advance a reason why a replacement would be superior. I
>> cannot think of a greater non-sequitur than supplying a demonstration of why
>> while loops are useful.
>
> That’s what I am saying. No one is supplying a demonstration of why while
> loops are useful and that suggestion is a straw man.
>
> That was not meant to be a straw man, not on my part. It is my understanding
> of Harlan's example. It shows that, without while loops, it is unwieldy to
> express the same thing using goto statements. That is fine, but it is not at
> all on point for this discussion.
>
> My point below that simple and clear syntax is an improvement on syntax with
> more noise.
>
> repeat {
> // code
> }
>
> vs
>
> repeat {
> // code
> } while true
>
> What's wrong with `while true { }` ?
>
> The reason that the former is superior to the latter is that, given repeat is
> already part of the language, the former it is simpler, with less noise. It
> reads like simple english. It also aligns well with current do {} syntax.
> This is the only argument I’m offering, and I think it’s the only one that
> could be offered for such a small syntax change given that it *only* serves
> to clarify and reduce noise of current syntax which has the same
> functionality.
>
>
>> On Tue, May 10, 2016 at 16:27 Tyler Cloutier via swift-evolution
>> <[email protected] <mailto:[email protected]>> wrote:
>>> On May 10, 2016, at 2:13 PM, Harlan Haskins via swift-evolution
>>> <[email protected] <mailto:[email protected]>> wrote:
>>>
>>> You could always do your control flow with goto’s anyway…
>>>
>>> func foo() {
>>> var i = 0
>>> func goto(_ label: String = "entry") {
>>> switch label {
>>> case "entry":
>>> print("beginning loop…")
>>> goto("cond")
>>> case "cond":
>>> goto(i < 10 ? "body" : "end")
>>> case "body":
>>> i += 1
>>> print("\(i)")
>>> goto("cond")
>>> case "end":
>>> break
>>> default: break
>>> }
>>> }
>>> goto()
>>> }
>>>
>>> Apologies,
>>> Harlan
>>
>>
>> And isn’t this the point really. Yes there are many different ways of doing
>> something, but there should be one obvious way. IMHO, there is nothing more
>> obvious than just
>>
>> repeat {
>>
>> }
>>
>> It’s very clear. It’s not about adding complex control flow, it’s about
>> simplifying current syntax. I don’t think anyone is arguing that it’s more
>> powerful than what while loops currently offer.
>>
>>
>>>
>>>> On May 10, 2016, at 2:05 PM, Taras Zakharko via swift-evolution
>>>> <[email protected] <mailto:[email protected]>> wrote:
>>>>
>>>> When I need a loop with complex control flow that does not fit into the
>>>> classical while {} or repeat {} while structure, I use this:
>>>>
>>>> do_stuff: do {
>>>> …
>>>> continue do_stuff
>>>> }
>>>>
>>>> This pattern explicit and allows very complex control flow patterns
>>>> without the drawbacks of the unrestricted goto construct.
>>>>
>>>> Therefore I don’t see utility with having a repeat {} without while
>>>> clause.
>>>>
>>>> Best,
>>>>
>>>> Taras
>>>>
>>>>
>>>>> On 10 May 2016, at 22:39, Dominik Pich via swift-evolution
>>>>> <[email protected] <mailto:[email protected]>> wrote:
>>>>>
>>>>>
>>>>>>> On May 10, 2016, at 3:30 PM, Tyler Cloutier via swift-evolution
>>>>>>> <[email protected] <mailto:[email protected]>> wrote:
>>>>>>>
>>>>>>> Secondly it’s a very simple way of introducing new programmers to
>>>>>>> loops. It’s IMHO more clear to a new programmer that repeat will just
>>>>>>> repeat indefinitely vs while true.
>>>>>>
>>>>>> This point seems strange to me - why teach a new programmer about loops
>>>>>> by first showing them a looping construct they should probably never use
>>>>>> in actual practice until they really know what they’re doing?
>>>>> totally agree… it would be a bad first introduction, id say :)
>>>>>
>>>>> _______________________________________________
>>>>> swift-evolution mailing list
>>>>> [email protected] <mailto:[email protected]>
>>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>>>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>>>
>>>> _______________________________________________
>>>> swift-evolution mailing list
>>>> [email protected] <mailto:[email protected]>
>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>>>
>>> _______________________________________________
>>> swift-evolution mailing list
>>> [email protected] <mailto:[email protected]>
>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>> _______________________________________________
>> swift-evolution mailing list
>> [email protected] <mailto:[email protected]>
>> https://lists.swift.org/mailman/listinfo/swift-evolution
>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
>
>
> _______________________________________________
> 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