Hi Jens - <br><br>thanks for the quick reply.&nbsp; After some more
researching plus looking at your code I realized where my mistakes are
- I thought symbols in a syntax expands out to itself, but apparently
this is not the case (hence my problem has nothing to do with
module/macros).&nbsp; Instead, I need to use datum-&gt;syntax-object to make
sure that timeout in syntax equals timeout in symbol (BTW - thanks for
your example showing below using stx as the context syntax... I was
scratching my head trying to figure out where I can provide a context).
<br><br>However, looking at your code there are some concepts that I don&#39;t understand: <br><ul><li>your
code provides syntax name for time-out and main rather than timeout,
start, initial-request, and interface-version - why this also works
without having to convert them to syntax-object?&nbsp; <br></li><li>how does the nested define-syntax work both in terms of expansion and scoping?&nbsp;</li><li>Aesthetics
and styles aside - is there a reason for nested define-syntax?&nbsp; (It
looks cool to learn, but I came from the C world where definitions
belong on top level, so want to know why and how I can think in this
fashion) <br></li></ul>Below is what I have right now that works... yours seem shorter ;) <span class="q"><br><br>(module syntax-util mzscheme <br>&nbsp; (provide (all-defined)) <br><br></span>&nbsp; (define-syntax time-out <span class="q">
<br>&nbsp;&nbsp;&nbsp; (lambda (stx) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (syntax-case stx () 
<br></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((_ t) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (with-syntax ((timeout (datum-&gt;syntax-object stx &#39;timeout))) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&#39;(define timeout t))))))<br>&nbsp; <br>&nbsp; (define-syntax main <span class="q"><br>&nbsp;&nbsp;&nbsp; (lambda (stx) 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (syntax-case stx () 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((_ body ...) <br></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (with-syntax ((start (datum-&gt;syntax-object stx &#39;start))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (initial-request (datum-&gt;syntax-object stx &#39;intial-request))) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&#39;(define (start initial-request) 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; body ...))))))<span class="q"><br>&nbsp; <br>&nbsp; (define-syntax servlet <br>&nbsp;&nbsp;&nbsp; (lambda (stx) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (syntax-case stx () <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((_ body ...) <br></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (with-syntax ((interface-version (datum-&gt;syntax-object stx &#39;interface-version))) 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&#39;(begin <span class="q"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; body ...<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (define interface-version &#39;v1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (provide (all-defined))))))))) <br><br></span><span class="q">(module webtest1 mzscheme 
<br>&nbsp; (require syntax-util) <br>
&nbsp; (servlet <br>&nbsp;&nbsp; (time-out +inf.0)<br>&nbsp;&nbsp; (main &#39;(p &quot;hello world&quot;)))) <br><br>(require webtest1) <br><br></span>timeout ; =&gt; +inf.0<br>interface-version ; =&gt;&nbsp; &#39;v1 <br>(start null) ; =&gt; &#39;(p &quot;hello world&quot;)
<br><br>Thanks,<br>yinso <div><span class="q" id="q_11201dbfb82e1b00_12"><br><br><br><div><span class="gmail_quote">On 4/17/07, <b class="gmail_sendername">Jens Axel Søgaard</b> &lt;<a href="mailto:jensaxel@soegaard.net" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
jensaxel@soegaard.net</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi Yin-So,<br><br>Here is one way to do it:<br><br>(module syntax-util mzscheme<br>&nbsp;&nbsp; (provide (all-defined))<br><br>&nbsp;&nbsp; (define-syntax servlet<br>&nbsp;&nbsp;&nbsp;&nbsp; (lambda (stx)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (syntax-case stx ()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((_ body ...)
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(with-syntax ([time-out (datum-&gt;syntax-object stx &#39;time-out)]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[main&nbsp;&nbsp;&nbsp;&nbsp; (datum-&gt;syntax-object stx &#39;main)])<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#`(begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(define-syntax (time-out stx)
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(syntax-case stx ()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((_ value)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&#39;(begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (define timeout value)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (provide timeout)))))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(define-syntax (main stx)
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(syntax-case stx ()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[(_ body1 (... ...))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&#39;(define start<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (lambda (initial-request)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; body1 (... ...)))]))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;body ...<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(define interface-version &#39;v1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(provide (all-defined))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;))))))<br>&nbsp;&nbsp; )<br><br>&nbsp;&nbsp;&nbsp;&nbsp;(require syntax-util)<br><br>&nbsp;&nbsp;(module webtest1 mzscheme
<br>&nbsp;&nbsp;&nbsp;&nbsp;(require syntax-util)<br>&nbsp;&nbsp;&nbsp;&nbsp;(servlet<br>&nbsp;&nbsp;&nbsp;&nbsp; (time-out +inf.0)<br>&nbsp;&nbsp;&nbsp;&nbsp; (main `(p &quot;hello world&quot;))<br>&nbsp;&nbsp;&nbsp;&nbsp; ))<br><br>&nbsp;&nbsp;(require webtest1)<br><br>&nbsp;&nbsp;timeout<br><br><br>I moved the definitions of time-out and main into the expansion of
<br>servlet, since they need to be in the scope of the forms of body ... .<br>Note that when expanding into ... one needs to write (... ...).<br><br>Also, to provide a name such as timeout, the provide form must have<br>
the same syntactic context as the definition. The easiest way to ensure
<br>this is, to put a provide-clause next to the definition.<br><br>--<br>Jens Axel Søgaard<br><br><br><br>--<br>Jens Axel Søgaard<br><br></blockquote></div><br><br clear="all"><br></span></div><div><span class="q" id="q_11201dbfb82e1b00_13">
-- <br><a href="http://www.yinsochen.com/" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://www.yinsochen.com</a><br>...continuous learning...
</span></div>