One thing I forgot to mention: define, define-values and lambda in the code<br>fragments are from the scheme language. If I didn&#39;t code-walk (or expand<br>on the reader), I wouldn&#39;t be able to store the expanded code, right?<br>
The problem, in this case, is hygiene (I can&#39;t replace scheme&#39;s define-values<br>because define expands to it) and the quote: the code inside it is not expanded.<br><br>Marco<br><br><div class="gmail_quote">On Fri, Nov 20, 2009 at 10:45 PM, Marco Monteiro <span dir="ltr">&lt;<a href="mailto:masm@acm.org">masm@acm.org</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="im"><div class="gmail_quote">On Fri, Nov 20, 2009 at 10:17 PM, Eli Barzilay <span dir="ltr">&lt;<a href="mailto:eli@barzilay.org" target="_blank">eli@barzilay.org</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div>On Nov 20, Marco Monteiro wrote:<br>
&gt;<br>
&gt; Now I&#39;m trying a new approach. Instead of expanding the module in<br>
&gt; the reader, I export a #%module-begin that replaces its subforms by<br>
&gt; a new macro that code-walks by using local-expand and some other<br>
&gt; hacks. This does not mix read and macro expansion levels, but I have<br>
&gt; to 10 times more code.<br>
<br>
</div>I didn&#39;t understand what you&#39;re trying to do in general?  Why do you<br>
need any kind of a code walker to begin with?<br>
<div><div></div><br></div></blockquote></div><br></div>To expand the code. For example, I want to write<br><br>---<br>#lang masm/sines<br><br>(define (f) (lambda () 42))<br><br>(f)<br>---<br><br>and I want it evaluated as if I wrote this:<br>

<br>---<br>#lang my-module<br><br>(define-values (f) (#%app void))<br><br>(#%app void)<br><br>(store-code (list &#39;(define-values (f) (lambda () (#%datum 42)) &#39;(#%app f))<br>---<br><br>This is a simplification, because I also want to store some syntax<br>

information, line number, etc. The definitions must stay in place<br>because the module may have a provide form that provides f.<br>The expressions must not be executed, because some of the<br>variables (f in this case) will not have the expected value<br>

(a procedure in this case).<br><br>Actually, the idea was to have the evaluation of a module to build<br>its Scheme AST, that can later be transformed to a JavaScript AST.<br>There may be a much saner way to do this. And this may end up<br>

not working. I&#39;m just experimenting.<br><font color="#888888"><br>Marco<br><br>
</font></blockquote></div><br>