I assume it wouldn&#39;t be too difficult, and that it&#39;s worth doing even if it doesn&#39;t solve this particular problem.  Can someone grant me commit privileges?<div><br></div><div><div class="gmail_quote">On Thu, Jan 19, 2012 at 5:18 AM, Matthew Flatt <span dir="ltr">&lt;<a href="mailto:mflatt@cs.utah.edu">mflatt@cs.utah.edu</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">(Just to be clear, that wouldn&#39;t solve the problem this time. The `=&#39;<br>
from `scheme&#39; and `racket&#39; are the same, but `frtime&#39; has its own `=&#39;.)<br>
<div class="HOEnZb"><div class="h5"><br>
At Thu, 19 Jan 2012 08:19:59 -0500, Matthias Felleisen wrote:<br>
&gt;<br>
&gt; Greg, how difficult would it be to migrate frtime to #lang racket? -- Matthias<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Jan 19, 2012, at 8:13 AM, Matthew Flatt wrote:<br>
&gt;<br>
&gt; &gt; The `frtime&#39; language exports an `=&#39; that isn&#39;t the same as `=&#39; in<br>
&gt; &gt; `racket&#39;, so that&#39;s why the pattern doesn&#39;t match. (This seems like a<br>
&gt; &gt; further weakness of the `frtime&#39; docs to specify the exports<br>
&gt; &gt; precisely.)<br>
&gt; &gt;<br>
&gt; &gt; You could avoid bound names like `=&#39; as literals in the macro.<br>
&gt; &gt; Normally, it works best for a form-exporting macro to also export<br>
&gt; &gt; bindings for any literals in the form. Otherwise, this kind of<br>
&gt; &gt; confusion is common.<br>
&gt; &gt;<br>
&gt; &gt; Alternatively, you may want to match literals in your macro<br>
&gt; &gt; symbolically instead of by binding. You can&#39;t do that easily with<br>
&gt; &gt; `syntax-rules&#39;, but you can use `syntax-case*&#39; and supply `(lambda (a<br>
&gt; &gt; b) (eq? (syntax-e a) (syntax-e b)))&#39; as the literal-comparison<br>
&gt; &gt; function.<br>
&gt; &gt;<br>
&gt; &gt; If it were me and I decided to go in the direction of symbol equality,<br>
&gt; &gt; I&#39;d use keywords instead --- `#:?&#39; and `#:=&#39; instead of `?&#39; and `=&#39; ---<br>
&gt; &gt; which makes clear that there&#39;s no question of binding.<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; At Thu, 19 Jan 2012 10:46:37 +0100, Marijn wrote:<br>
&gt; &gt;&gt; On 18-01-12 17:47, Matthew Flatt wrote:<br>
&gt; &gt;&gt;&gt; At Wed, 18 Jan 2012 12:02:10 +0100, Marijn wrote:<br>
&gt; &gt;&gt;&gt;&gt; I would expect both forms to work. This is a reduction of a different<br>
&gt; &gt;&gt;&gt;&gt; problem possibly caused by these issues here.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; So I tried to cut down my program to a reasonably sized test-case which<br>
&gt; &gt;&gt; is attached to this email. model.rkt contains (what&#39;s left of) the model<br>
&gt; &gt;&gt; macro, demo1.rkt contains a small model and a (require frtime). If you<br>
&gt; &gt;&gt; do &quot;racket demo1.rkt&quot; then you get the following error:<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; model.rkt:30:17: make-entry: bad syntax in: (make-entry (= profit<br>
&gt; &gt;&gt; (for/hash ((y years)) (values y (- (hash-ref income y 0) (hash-ref<br>
&gt; &gt;&gt; expenses y 0))))) (years income expenses profit))<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; === context ===<br>
&gt; &gt;&gt; standard-module-name-resolver<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; but if you comment the (require frtime) then the error goes away. I have<br>
&gt; &gt;&gt; other code that tests this same simple-economy model with the<br>
&gt; &gt;&gt; non-cutdown version of the model macro and supporting code and<br>
&gt; &gt;&gt; everything seems to work fine.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Any idea what&#39;s going on here?<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Marijn<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; ------------------------------------------------------------------------------<br>
&gt; &gt;&gt; [text/plain &quot;demo1.rkt&quot;] [~/Desktop &amp; open] [~/Temp &amp; open]<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; ------------------------------------------------------------------------------<br>
&gt; &gt;&gt; [text/plain &quot;model.rkt&quot;] [~/Desktop &amp; open] [~/Temp &amp; open]<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; ------------------------------------------------------------------------------<br>
&gt; &gt;&gt; [application/pgp-signature &quot;signature.asc&quot;] [~/Desktop &amp; open] [~/Temp &amp;<br>
&gt; open]<br>
&gt; &gt; _________________________<br>
&gt; &gt;  Racket Developers list:<br>
&gt; &gt;  <a href="http://lists.racket-lang.org/dev" target="_blank">http://lists.racket-lang.org/dev</a><br>
_________________________<br>
  Racket Developers list:<br>
  <a href="http://lists.racket-lang.org/dev" target="_blank">http://lists.racket-lang.org/dev</a><br>
</div></div></blockquote></div><br></div>