On 2 May 2018 at 22:06, Michael Jones <michael.jo...@gmail.com> wrote:
> Ok, weird proposal: Make the per-iteration update part of a for loop change
> from "assignment to assignment or boolean expression" to allow:
>
> while COND do {...}:
>
> for i:=0; x[i]<4; {...}
>
>
> do {...} while COND:
>
> for i:= 0; ; x[i]<4 { ...}

The per-iteration part already allows arbitrary expressions (they
might even be bool-valued)
https://play.golang.org/p/Nt9woI7EWRP

>
> On Wed, May 2, 2018 at 12:33 PM Louki Sumirniy
> <louki.sumirniy.stal...@gmail.com> wrote:
>>
>> It adds absolutely nothing, that's why it should not be accepted. It will
>> lead to a divergence in the way it's used as well. However I think maybe run
>> block once before first condition check would be a useful and powerful
>> addition. Maybe it shows my age that I even know what do-while
>> post-conditional loops are, and why they are useful. I have had to write
>> these more wordy constructs for exactly this purpose several times in a
>> project I am working on.
>>
>> If there could be some less verbose way to flag that the condition only be
>> checked first run. As I am thinking about it I am thinking of some other
>> ways too, such as adding an or clause in the conditional that only checks if
>> it's the first run, since golang's and and or operators are just
>> drop-throughs, well, more or less, I mean, the or operator just does both
>> tests and runs the block directly if the first condition passes. Here's a
>> rough sketch of it while I am thinking about it
>>
>> for w:= true; w || <cond>; w=false {
>>   ...
>> }
>>
>> This will always run the first time and I can't be certain but I think
>> that the compiler may skip the assignment second time since it is an
>> assignment. Still wordy but it is a do-while loop, nevertheless. If the
>> assignment is repeated each time it's still an overhead cost, however. Some
>> kind of 'do this only once' hint to the compiler maybe. But you see what I
>> mean. This is definitely a case of something Go could use as an improvement
>> and if it was constructed correctly it would not break old code, but instead
>> actually give people a way to improve it when refactoring later on.
>>
>> On Wednesday, 2 May 2018 20:43:11 UTC+3, Ian Lance Taylor wrote:
>>>
>>> On Wed, May 2, 2018 at 2:48 AM, Hugh Fisher <hugo....@gmail.com> wrote:
>>> >
>>> > On Tuesday, May 1, 2018 at 10:45:30 PM UTC+10, Ian Lance Taylor wrote:
>>> >>
>>> >>
>>> >> A `while` statement would presumably be exactly identical to a `for`
>>> >> statement with a single condition.  So adding a `while` statement
>>> >> would not add any power to the language, and would add an additional
>>> >> keyword.  All language choices are a cost benefit decision.  In this
>>> >> case the benefit is a looping construct that some people will find
>>> >> clearer to read and write, and the cost is a new keyword that
>>> >> everybody needs to learn, and that at this point in the language's
>>> >> evolution will likely break some, even if not much, existing code.  I
>>> >> don't think the benefit is worth the cost.
>>> >>
>>> > As for not adding any power, that's why I mentioned if-then-else and
>>> > switch.
>>> > Switch with boolean cases is the same as if then else. It's not an
>>> > obscure
>>> > side effect either, the Go Tour cheerfully explains how to use it
>>> > instead of
>>> > if-then-else if you prefer.
>>>
>>> That is not the same thing, though.  Yes, if-then-else and switch do
>>> similar things, but they have a different syntax and are idiomatically
>>> used in different ways.  You can consider if-then-else as syntactic
>>> sugar for switch, if you like.  It's OK for a language to have some
>>> syntactic sugar.
>>>
>>> But in this case you seem to be suggesting that we add `while <cond> {
>>> <body> }` as an exact duplicate of the existing language construct
>>> `for <cond> { <body> }`.  That's not syntactic sugar.  You are
>>> suggesting that `while` just be a synonym for `for`.  We don't need
>>> two different keywords that mean exactly the same thing.
>>>
>>>
>>> > Hmm, think I will have a look at the formal change proposal process...
>>>
>>> I encourage proposals but I can tell you upfront that this proposal
>>> will not be accepted.
>>>
>>> Ian
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "golang-nuts" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to golang-nuts+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
>
>
>
> --
> Michael T. Jones
> michael.jo...@gmail.com
>
> --
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to