On weird proposals there's also the `for { } else { }` construct that
has been put forward before.

On Wed, 2018-05-02 at 21:06 +0000, Michael Jones 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 { ...}
> 
> 
> 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.

Reply via email to