On Mar 29, 2008, at 7:40 AM, Igor Bukanov wrote:
> On 29/03/2008, Kris Zyp <
kris@...> wrote:
>> I think Neil's inspiring demonstration of pseudo-threading with
>> generators
>> is also worthy of inclusion in your list of generator use cases:
>>
http://www.neilmix.com/2007/02/07/threading-in-javascript-17/>
> That code can be written without generators. In general whenever the
> code in the examples from the blog does yield, one can replace that
> with "return function() { the rest of code from the function}". But
> this would require to replace imperative loops from the examples by
> recursive functions.
This particular continuation-passing style would also require proper
tail calls
http://wiki.ecmascript.org/doku.php?id=proposals:proper_tail_callsto be normative, but (news flash) proper tail calls are out of ES4 as
of yesterday's Ecma TC39 meeting, by general (regretful, in Mozilla's
case) agreement.
> This shows that if one programs in a functional style, then generators
> are not that useful. But they are valuable if the code uses explicit
> loops etc. Plus with generators one can assume certain time and space
> complexity bounds in ES4 which is not the case for functional code in
> the view of deferred tail call proposal.
I'm glad you mentioned tail calls. I'd word it more strongly, as
above: tail calls are required if CPS is the preferred style to use
in lieu of generators. Of course my mail showed a non-CPS expansion
of generators into functions and objects, which does not require tail
calls. But it's verbose, sub-optimal for implementations, and error
prone compared to generators.
/be
_______________________________________________
Es4-discuss mailing list
Es4-discuss@...
https://mail.mozilla.org/listinfo/es4-discuss