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

Xiaodi Wu xiaodi.wu at gmail.com
Tue May 10 16:50:12 CDT 2016


On Tue, May 10, 2016 at 4:46 PM, Tyler Cloutier <cloutiertyler at aol.com>
wrote:

>
> On May 10, 2016, at 2:34 PM, Xiaodi Wu <xiaodi.wu at gmail.com> 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 <
> swift-evolution at swift.org> wrote:
>
>> On May 10, 2016, at 2:13 PM, Harlan Haskins via swift-evolution <
>> swift-evolution at swift.org> 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 <
>> swift-evolution at swift.org> 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 <
>> swift-evolution at swift.org> wrote:
>>
>>
>> On May 10, 2016, at 3:30 PM, Tyler Cloutier via swift-evolution <
>> swift-evolution at swift.org> 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
>> swift-evolution at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>
>>
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>
>>
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>
>> _______________________________________________
>> 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/950acb52/attachment.html>


More information about the swift-evolution mailing list