Read this article on three different occasions to understand its intent. It finally clicked when I read this:<p>"...co-routines save the control state of a function between calls. Kinda like recursion - you know exactly where are you going to return after a function call...When you call a co-routine, it doesn’t start all over from the beginning. Rather, it starts from right after where it returned (yielded control) the previous time it was called."<p>Source:http://eli.thegreenplace.net/2009/08/29/co-routines-as-an-alternative-to-state-machines/
A neat trick, but also one of the better arguments for more principled macro systems. These macros are fragile, and the error messages for misuse must be inscrutable. So: cool, but I hope I never have to use it.