Just want to verify a quick point w.r.t the solution: <br><br>My understanding is that if an identifier is &quot;known&quot; then it would evaluate to the correct form - for example:<br><br>(lambda (stx) <br>&nbsp; (syntax-case stx () 
<br>&nbsp;&nbsp;&nbsp; ((_ foo ...) <br>&nbsp;&nbsp;&nbsp; #&#39;(begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (_ foo ...))))) <br><br>The begin keyword is &quot;okay&quot; (without having to provide context) because it is already an known identifier.&nbsp; But if I am to generate my own name then I need to use the datum-&gt;syntax-object binding. 
<br><br>So why isn&#39;t &#39;(provide ...) &quot;okay&quot;? <br><br>Thanks,<br>yinso <br><br><div><span class="gmail_quote">On 4/24/07, <b class="gmail_sendername">Yin-So Chen</b> &lt;<a href="mailto:yinso.chen@gmail.com">
yinso.chen@gmail.com</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;">Thanks!! I was scratching my head trying to figure out where things went wrong and went down the define-macro path... thanks for pointing out my misunderstanding ;) 
<br><br>Very appreciated ;)<br><br>yinso <div><span class="e" id="q_112262ebc5af7f2c_1"><br><br><div><span class="gmail_quote">
On 4/24/07, <b class="gmail_sendername">Matthew Flatt</b> &lt;<a href="mailto:mflatt@cs.utah.edu" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">mflatt@cs.utah.edu</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;">

At Tue, 24 Apr 2007 13:35:45 -0700, &quot;Yin-So Chen&quot; wrote:<br>&gt;&nbsp;&nbsp; (define-syntax require-prefix<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp; (lambda (stx)<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (syntax-case stx ()<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((_ req-clause)<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(with-syntax ((pref (datum-&gt;syntax-object stx (string-&gt;symbol
<br>&gt; &quot;a:&quot;))))<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#`(require (prefix pref req-clause))))<br><br>The context of the `(prefix ...)&#39; form determines the binding context<br>of the imports. So, you need to give the `(prefix ...)&#39; part the
<br>original context.<br><br>Here&#39;s one way to do it:<br><br>&nbsp;&nbsp;(define-syntax require-prefix<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;((_ req-clause)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (with-syntax ((pref-req-clause (datum-&gt;syntax-object
<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&#39;req-clause<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; `(prefix a: ,#&#39;req-clause)<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&#39;req-clause)))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&#39;(require pref-req-clause)))
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((_ req-clause rest ...)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #&#39;(begin<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (_ req-clause)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (_ rest ...))))))<br><br><br>Matthew<br><br></blockquote></div><br><br clear="all"><br></span></div><span class="sg">
-- <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></blockquote></div><br><br clear="all"><br>-- <br><a href="http://www.yinsochen.com">http://www.yinsochen.com</a><br>...continuous learning...