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