After reading <a href="http://blog.plt-scheme.org/2007/07/control-resumed.html">http://blog.plt-scheme.org/2007/07/control-resumed.html</a> I decided to look into prompt/control/%/fcontrol and the rest of the goodies in control.ss
<br><br>So based on the example from the blog post I did this python like snippet.<br><br>================<br>(require (lib &quot;control.ss&quot;))<br><br>(define (make-step)<br>&nbsp; (define (body)<br>&nbsp;&nbsp;&nbsp; (yield 1)<br>&nbsp;&nbsp;&nbsp; (yield 2)
<br>&nbsp;&nbsp;&nbsp; (yield 3)<br>&nbsp;&nbsp;&nbsp; &#39;finished)<br>&nbsp; (define (yield value) (control resume-here (set! _body_ resume-here) value))<br>&nbsp; (define (generator) (prompt (body)))<br>&nbsp; (generator))<br>================<br><br>I decided to look into turning it into a macro, such that the following ends up being correct code
<br>==============<br>(define/y (step) <br>&nbsp; (yield 1)<br>&nbsp; (yield 2)<br>&nbsp; (yield 3)<br>&nbsp; &#39;finished)<br>==============<br><br>My problem is that I don&#39;t know how to define yield as a macro inside the define/y scope, since it need to be able to access _body_, which is a defined in define/y. All I come up with are various non-hygienic (and simply broken) variations.
<br><br>Can you point me to some examples doing something similar (and/or relevant docs).<br><br>I know that there is generator.ss in planet, but for me this is a nice exercise, since I&#39;m trying to build some intuition about scheme macros. I was avoiding them for too long...
<br><br>Cheers,<br>Vlado<br>