<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;"><span style="font-family: courier,monaco,monospace,sans-serif;">OK, I'm using #lang scheme and the Module language now.<br><br>But I'm still getting an extra blank inserted when I replace MATCH with MMATCH (see MMATCH- FIRST below). Is the replace function supposed to work this way?<br><br>Michael<br><br>========<br><br>(define mmatch </span><br style="font-family: courier,monaco,monospace,sans-serif;"><span style="font-family: courier,monaco,monospace,sans-serif;">&nbsp; (λ (pat1 pat2)</span><br style="font-family: courier,monaco,monospace,sans-serif;"><span style="font-family: courier,monaco,monospace,sans-serif;">&nbsp;&nbsp;&nbsp; (if (null? pat1)</span><br style="font-family: courier,monaco,monospace,sans-serif;"><span style="font-family: courier,monaco,monospace,sans-serif;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (null? pat2)</span><br
 style="font-family: courier,monaco,monospace,sans-serif;"><span style="font-family: courier,monaco,monospace,sans-serif;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (null? pat2)</span><br style="font-family: courier,monaco,monospace,sans-serif;"><span style="font-family: courier,monaco,monospace,sans-serif;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #f</span><br style="font-family: courier,monaco,monospace,sans-serif;"><span style="font-family: courier,monaco,monospace,sans-serif;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (if (mmatch -first (car pat1) (car pat2))</span><br style="font-family: courier,monaco,monospace,sans-serif;"><span style="font-family: courier,monaco,monospace,sans-serif;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (match (cdr pat1) (cdr pat2))</span><br style="font-family: courier,monaco,monospace,sans-serif;"><span
 style="font-family: courier,monaco,monospace,sans-serif;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #f)))))</span><br style="font-family: courier,monaco,monospace,sans-serif;"><br><br>--- On <b>Tue, 12/29/09, Robby Findler <i>&lt;robby@eecs.northwestern.edu&gt;</i></b> wrote:<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><br>From: Robby Findler &lt;robby@eecs.northwestern.edu&gt;<br>Subject: Re: [plt-scheme] Not so hygienic macros?<br>To: "michael rice" &lt;nowgate@yahoo.com&gt;<br>Cc: "Shriram Krishnamurthi" &lt;sk@cs.brown.edu&gt;, "plt-scheme" &lt;plt-scheme@list.cs.brown.edu&gt;<br>Date: Tuesday, December 29, 2009, 9:17 AM<br><br><div id="yiv378533535">With modules you get error messages (more often) when things won't work. In this case, I'd say it is probably easier to use mzlib/trace instead, tho.<br><br>#lang scheme<br><br>(require
 mzlib/trace)<br><br><br>(define (f x)<br>
&nbsp; (if (zero? x)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (+ (f (- x 1)) 1)))<br><br>(trace f)<br>(f 10)<br><br><div class="gmail_quote">On Tue, Dec 29, 2009 at 7:44 AM, michael rice <span dir="ltr">&lt;<a rel="nofollow" ymailto="mailto:nowgate@yahoo.com" target="_blank" href="/mc/compose?to=nowgate@yahoo.com">nowgate@yahoo.com</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;"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td style="font-family: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; font-size: inherit; line-height: inherit; font-size-adjust: inherit; font-stretch: inherit;" valign="top">
Yep, there it was, and somehow I missed it.<br><br>Also, I was using&nbsp; (require eopl/eopl) for tracing. Is that now OK, or still verboten?<br><br>Michael<br><br>--- On <b>Tue, 12/29/09, Shriram Krishnamurthi <i>&lt;<a rel="nofollow" ymailto="mailto:sk@cs.brown.edu" target="_blank" href="/mc/compose?to=sk@cs.brown.edu">sk@cs.brown.edu</a>&gt;</i></b> wrote:<br>
<blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><br>From: Shriram Krishnamurthi &lt;<a rel="nofollow" ymailto="mailto:sk@cs.brown.edu" target="_blank" href="/mc/compose?to=sk@cs.brown.edu">sk@cs.brown.edu</a>&gt;<div class="im">
<br>Subject: Re: [plt-scheme] Not so hygienic macros?<br>To: "michael rice" &lt;<a rel="nofollow" ymailto="mailto:nowgate@yahoo.com" target="_blank" href="/mc/compose?to=nowgate@yahoo.com">nowgate@yahoo.com</a>&gt;<br></div>Cc: "Robby Findler" &lt;<a rel="nofollow" ymailto="mailto:robby@eecs.northwestern.edu" target="_blank" href="/mc/compose?to=robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</a>&gt;, <a rel="nofollow" ymailto="mailto:plt-scheme@list.cs.brown.edu" target="_blank" href="/mc/compose?to=plt-scheme@list.cs.brown.edu">plt-scheme@list.cs.brown.edu</a><br>
Date: Tuesday, December 29, 2009, 8:10 AM<div><div></div><div class="h5"><br><br><div>It's the topmost entry.&nbsp; It looks like it's missing a heading.<br><br><div class="gmail_quote">On Tue, Dec 29, 2009 at 7:29 AM, michael rice <span dir="ltr">&lt;<a rel="nofollow" target="_blank" href="http://mc/compose?to=nowgate@yahoo.com">nowgate@yahoo.com</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;"><table border="0" cellpadding="0" cellspacing="0"><tbody><tr><td style="font-family: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; font-size: inherit; line-height: inherit; font-size-adjust: inherit; font-stretch: inherit;" valign="top">


What is the "Module" language? Don't see it in any of the language selection menus.<br><br>Michael<div><br><br>--- On <b>Tue, 12/29/09, Robby Findler <i>&lt;<a rel="nofollow" target="_blank" href="http://mc/compose?to=robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</a>&gt;</i></b> wrote:<br>


</div><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><div><br>From: Robby Findler &lt;<a rel="nofollow" target="_blank" href="http://mc/compose?to=robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</a>&gt;<br>


Subject: Re: [plt-scheme] Not so hygienic macros?<br>To: "michael rice" &lt;<a rel="nofollow" target="_blank" href="http://mc/compose?to=nowgate@yahoo.com">nowgate@yahoo.com</a>&gt;<br>Cc: <a rel="nofollow" target="_blank" href="http://mc/compose?to=plt-scheme@list.cs.brown.edu">plt-scheme@list.cs.brown.edu</a><br>


</div>Date: Tuesday, December 29, 2009, 2:21 AM<div><div></div><div><br><br><div>On Mon, Dec 28, 2009 at 9:02 PM, michael rice &lt;<a rel="nofollow" target="_blank" href="http://mc/compose?to=nowgate@yahoo.com">nowgate@yahoo.com</a>&gt; wrote:<br>


&gt; OK, here's some code (at bottom) to work with. Use of MATCH seems to cause a lot of<br>&gt; problems. Code is actually Scheme
 translation of some Logo code from an old TLC Logo<br>&gt; book (for the Mattel Aquarius no less) authored by John R. Allen.<br><br>I think you're running into what Matthew calls "hopeless top-level<br>problems". Eli can probably say more about what is going on with the<br>


Swindle language that leads to these precise results.<br><br>In the meatime, I think that if you use the module language, I think<br>you'll find that the program behaves much more sanely. That is, get<br>rid of the eopl require, prefix the program with "#lang scheme", and<br>


use the "Module" language to run the program in DrScheme. When I do<br>that, both versions of the program, the one you posted, and the one<br>below, behave identically on the example inputs you send, namely<br>

producing #f for both of these calls:<br>
<br>&nbsp; (compare '(likes desi lucy) db)<br>&nbsp; (compare '(likes romeo juliet) db)<br><br>hth,<br>Robby<br><br>#lang scheme<br><br>(define match<br>&nbsp; (λ
 (pat1 pat2)<br>&nbsp; &nbsp; (if (null? pat1)<br>&nbsp; &nbsp; &nbsp; &nbsp; (null? pat2)<br>&nbsp; &nbsp; &nbsp; &nbsp; (if (null? pat2)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #f<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (if (match-first (car pat1) (car pat2))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (match (cdr pat1) (cdr pat2))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #f)))))<br>


<br>(define match-first<br>&nbsp; (λ (pat1 pat2)<br>&nbsp; &nbsp; (if (symbol? pat1)<br>&nbsp; &nbsp; &nbsp; &nbsp; (if (symbol? pat2)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (equal? pat1 pat2)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; #f)<br>&nbsp; &nbsp; &nbsp; &nbsp; (cond ((symbol? pat2) #f)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ((match-first pat1 (car pat2)) (match (cdr pat1) (cdr pat2)))<br>


&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (else #f)))))<br><br>(define compare<br>&nbsp; (λ (q
 db)<br>&nbsp; &nbsp; (cond ((null? db) #f)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (else (cond ((match q (car db)) #t)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (else (compare q (cdr db))))))))<br><br>(define db '((likes minnie mickey) (likes jack jill) (likes daisy donald)))<br>


</div></div></div></blockquote></td></tr></tbody></table><br>

      <br>_________________________________________________<br>
 &nbsp;For list-related administrative tasks:<br>
 &nbsp;<a rel="nofollow" target="_blank" href="http://list.cs.brown.edu/mailman/listinfo/plt-scheme">http://list.cs.brown.edu/mailman/listinfo/plt-scheme</a><br>
<br></blockquote></div><br>
</div></div></div></blockquote></td></tr></tbody></table><br>

      </blockquote></div><br>
</div></blockquote></td></tr></table><br>