On Sunday, 9 March 2014 at 11:00:13 UTC, Peter Alexander wrote:
On Sunday, 9 March 2014 at 10:30:37 UTC, bearophile wrote:
w0rp:

3. Give up on maximum performance (fiber-based coroutine range)

I think that's what I would go for.

Yet there's no need for that. You can have your pie and eat it too, with a small cost. D can rewrite code that contains a yield in an efficient finite state machine (this is what ShedSkin compiler for Python does, and perhaps the C# compiler does the same).

How does this handle recursive generators, e.g. like you would see with a depth-first tree traversal? The "state" in this case is a call stack. How is the memory allocated for the stack?

The generators mentioned are stack-less. You'd need to maintain the stack yourself.

Reply via email to