<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body style="background-color: rgb(255, 255, 255); color: rgb(0, 0,
    0);" text="#000000" bgcolor="#FFFFFF">
    Expanding on do...<br>
    <br>
    <div class="moz-cite-prefix">On 03/16/18 09:50, Peter Levart wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:c90e1ca9-26b2-42fb-2bbd-3ecb817a7363@gmail.com"><!--[if !IE]><DIV style="border-left: 2px solid #009900; border-right: 2px solid #009900;  padding: 0px 15px; margin: 2px 0px;"><![endif]-->
      And if "while (false)" could be optional, we get:<br>
      <!--[if !IE]></DIV><![endif]--></blockquote>
    <br>
    Or better yet, make "while (true)" optional even in statement do, so
    we can finally get away with some more boilerplate:<br>
    <br>
    for (;;) {<br>
    }<br>
    <br>
    or<br>
    <br>
    while (true) {<br>
    }<br>
    <br>
    and simply do:<br>
    <br>
    do {<br>
    }<br>
    <br>
    For e-do, the choice of default "while (true)" is fine, because it
    aligns with the fact that there has to be a break <value>
    somewhere to exit it anyway because it has to yield a result. But
    there will be some danger that a programmer codes an infinite loop
    by mistake.<br>
    <br>
    <br>
    <blockquote type="cite"
      cite="mid:c90e1ca9-26b2-42fb-2bbd-3ecb817a7363@gmail.com"><!--[if !IE]><DIV style="border-left: 2px solid #009900; border-right: 2px solid #009900;  padding: 0px 15px; margin: 2px 0px;"><![endif]-->
      <br>
      doSomething(<br>
          par1,<br>
          do {<br>
              // compute result...<br>
             break resut;<br>
          },<br>
          par3<br>
      );<br>
      <br>
      <!--[if !IE]></DIV><![endif]--></blockquote>
    <br>
    Expanding on e-do... It could be a building block for e-switch. Remi
    is advocating for expression-only case(s) in e-switch. Combined with
    e-do, we could write:<br>
    <br>
    int y = switch (x) {<br>
        case 1 -> 2;<br>
        case 2 -> 3;<br>
        case 3 -> do {<br>
            r = ...;<br>
            break r;<br>
        };<br>
    };<br>
    <br>
    What we loose here is fallthrough. And we still have "break" here
    too.<br>
    <br>
    It's unfortunate that we couldn't find a way to have an e-{block} of
    a kind when lambdas have been conceived. That way we could get away
    with expression-only lambdas and expression-only cases in e-switch
    using the same building block. But I guess the statement lambda has
    its weight with its "return" sticking out and reminding us about the
    scope.<br>
    <br>
    Regards, Peter<br>
    <br>
  </body>
</html>