This whole thing is another nail in the coffin of generators.  Generators are 
the root of the troublesome longjmp's which don't play well with others.

   Waldemar


Brendan Eich wrote:
To make this clear with an example (thanks to Jason for some IRC interaction):

function gen(arg) {
    foo((lambda (x) yield x), arg);
}
function foo(callback, arg) {
    try {
        callback(arg);
    } finally {
        alert("I'm ok!");
    }
}
g = gen(42);
print(g.next()); // tell the user the meaning of life, etc.
g = null;
gc();

I think finally is the only issue, since how else can you tell that foo didn't see a return or exception from the callback?

It's true that this finally-may-not-run wrinkle is confined to generator functions in JS1.7, i.e., without lambda.

But I think any function that invokes an arbitrary other function in a try has to fear that its finally might not run. There could be a hard stop due to iloop prevention, or an uncatchable security fail-stop error.

FWIW I'm cool on lambda and return to label atm.

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

Reply via email to