<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#ffffff">
    On 29.05.2011 23:29, Brendan Eich wrote:
    <blockquote
      cite="mid:D8204692-516D-4F4A-93FD-C2D9DE129014@mozilla.com"
      type="cite">
      <div>
        <div>On May 29, 2011, at 7:17 AM, Jose Antonio Perez wrote:</div>
        <br class="Apple-interchange-newline">
        <blockquote type="cite">
          <div class="gmail_quote">2011/5/29 Dmitry A. Soshnikov <span
              dir="ltr"><<a moz-do-not-send="true"
                href="mailto:dmitry.soshnikov@gmail.com">dmitry.soshnikov@gmail.com</a>></span><br>
            <div><br>
            </div>
            <blockquote class="gmail_quote" style="border-left: 1px
              solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex;
              padding-left: 1ex;">
              <div text="#000000" bgcolor="#ffffff"> That's it, exactly.
                We always looking for a shorter sugar. Though, the main
                thing that the sugar shouldn't be cryptic at the same
                time. Probably Erlang's list comprehensions are cryptic
                for someone, but again, taking into account
                arrow-functions, seems arrow-comprehensions aren't so
                cryptic.<br>
              </div>
            </blockquote>
          </div>
          <br>
          I think that your proposal based in Haskell's syntax is
          natural,clear and easy for the user. A EBNF grammar for it:<br>
          <br>
          <div style="margin-left: 40px;">
            ListComprehension :  '[' Expression '|'  IterableOrFilter
            (,IterableOrFilter)+ ']'<br>
            IterableOrFilter:          Id '<-' ArrayOrGenerator |
            BooleanFilter<br>
          </div>
          <br>
          The problem is the LL(1) conflict with Array Literal, but that
          doesn't matter much, right?  ;)<br>
        </blockquote>
      </div>
      <br>
      <div>No, it's a big incompatibility that could result in no early
        error, rather a shift in meaning.</div>
      <div><br>
      </div>
      <div>We're not doing those without a really good reason. We don't
        have one here.</div>
      <div><br>
      </div>
    </blockquote>
    <br>
    OK; it has been just proposed.<br>
    <br>
    Basically I think paren-free "for-in + if" scheme is fine, just
    though it can be more sugared with the arrow. But, there's no a
    _big_ need, I agree.<br>
    <br>
    P.S.: though, btw, IIRC, you said the same when an year ago I
    proposed arrow functions or Ruby's blocks and they were refused
    because of grammar reasons; today we want them to standardize ;) I
    mean, perhaps what seems not so needed and complicated to implement
    at first glace, later can become interesting and useful.<br>
    <br>
    Dmitry.<br>
    <br>
    <blockquote
      cite="mid:D8204692-516D-4F4A-93FD-C2D9DE129014@mozilla.com"
      type="cite">
      <div>People seem to forget that | is an operator in the language.
        In <a moz-do-not-send="true"
href="http://wiki.ecmascript.org/doku.php?id=strawman:block_lambda_revival">http://wiki.ecmascript.org/doku.php?id=strawman:block_lambda_revival</a>
        I worked around the lesser problem of parameter default values
        by requiring any default value using bitwise-or to be
        parenthesized:</div>
      <div><br>
      </div>
      <div>  blam = {|x = (y | z)| x*x};</div>
      <div><br>
      </div>
      <div>But block-lambdas do not use [] where | may be an operator in
        a single element initialiser expression, so there's no further
        incompatibility.</div>
      <div><br>
      </div>
      <div>Not so with square brackets.</div>
      <div><br>
      </div>
      <div>Array comprehensions using for-in or the replacement
        (paren-free, probably "for-of") Harmony syntax are in for
        ES.next.</div>
      <div><br>
      </div>
      <div>/be</div>
    </blockquote>
    <br>
  </body>
</html>