Jason Orendorff wrote:
On Thu, May 9, 2013 at 11:42 PM, Mike Stay <[email protected] <mailto:[email protected]>> wrote:

    In Scala, this is desugared into
      expr1.flatMap(x =>
        expr2(x).flatMap(y => ...
          exprN(x, y, ...).map(z =>
            result(x, y, ..., z)
          )
        )
      )


Currently comprehensions use the same protocol as for-of statements, namely iterators. I think we definitely want them to use the same protocol.

.map() is appealing, but to work with for-of statements, it would have to support break, continue, and early return, either using exceptions (like Scala's Breaks) or something new. Part of the appeal of the iterator protocol is that it doesn't complicate break/continue/return.

Agreed. JS ain't Scala.

Note for Mike Stay, in case it helps a bit (just syntax): we agreed to use LTR order, so:

[for (x of expr1) for (y of expr2(x)) result(x, y)]


to shorten your example a bit.

Separately, for the list: are arrow-functions lexically transparent to super and arguments? I hope so! For this kind of desugaring, if nothing else.

'super' like 'this' is lexical -- the outer function's same-named keyword meaning.

'arguments' per http://wiki.ecmascript.org/doku.php?id=harmony:arrow_function_syntax is an error. Perhaps we should change this to match the keywords. Allen?

/be

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to