On May 15, 2009, at 2:34 AM, kevin curtis wrote:
If a function is used instead of a lambda, do the the same - syntactic or semantic - problems arise?
No, because yield in a function makes it a generator, whereas in the lambda proposal extended to treat yield as return/break/continue are treated (per Tennent's Correspondence Principle), yield does not make the lamda some kind of generator-lambda -- instead it yields the nearest enclosing function (if active; else throw).
foo((lambda (x) yield x), arg); to: foo((function (x) yield x), arg); // js1.7 expression closure syntax OR foo(function (x) { yield x}, arg);
That passes a generator function to foo. If foo calls it, foo gets a generator-iterator, which if used in a for-in construct, or explicitly iterated via .next/send/throw, yields x once then throws StopIteration.
/be _______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss