On May 14, 2009, at 1:47 PM, Waldemar Horwat wrote:

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.

Are you talking about generators, or lambdas?

Generators have no longjmps at all. The only issue here is due to the lambda following Tennent's Correspondence Principle.

/be



  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