Wait. It seems that you&#39;re right.<br>I&#39;m running version 371. So I&#39;ll update now.<br><br>:) Thanks. I&#39;ll update you in how things go.<br><br><div class="gmail_quote">On Jan 19, 2008 3:57 PM, Gregory Cooper &lt;
<a href="mailto:greg@cs.brown.edu">greg@cs.brown.edu</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">What version of DrScheme are you running? &nbsp;There was a bug in the v371
<br>debugger that would produce error messages like that, but it should<br>have been fixed in v372 (and in svn as of r7169 I think).<br><div><div></div><div class="Wj3C7c"><br>On Jan 19, 2008 10:28 AM, Ran Gutin &lt;<a href="mailto:manicmessiah@gmail.com">
manicmessiah@gmail.com</a>&gt; wrote:<br>&gt; (define (doublequoted-symbol? sym)<br>&gt; &nbsp; (and (pair? sym) (eqv? (car sym) &#39;quote)))<br>&gt;<br>&gt; (define-syntax match<br>&gt; &nbsp; (syntax-rules ()<br>&gt; &nbsp; &nbsp; ((match vars [pfirst prest ...] body ...)
<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp;(cond<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; ((and (not (doublequoted-symbol? (quote pfirst)))<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(symbol? (quote pfirst)))<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; (let ((pfirst (car vars)))<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (match (cdr vars) [prest ...] body ...)))
<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp;((eqv? pfirst (car vars))<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; (match (cdr vars) [prest ...] body ...))<br>&gt;<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp;(else #f)))<br>&gt;<br>&gt; &nbsp; &nbsp; ((match vars [] body ...) (begin body ...))))<br>&gt;<br>&gt; (match &#39;(1 2 3) (one 2 three)
<br>&gt; &nbsp; (display three))<br>&gt;<br>&gt;<br>&gt;<br>&gt; Sorry for not commenting on the code, but here&#39;s a basic idea of what it<br>&gt; SHOULD do:<br>&gt; (match &#39;(1 2 3) (1 2 3) (display 3)) should match perfectly and display 3 on
<br>&gt; the terminal (it doesn&#39;t).<br>&gt; (match &#39;(1 2 3) (one two three) (display 3)) works perfectly, and prints 3.<br>&gt; (match &#39;(1 2 3) (&#39;one &#39;two &#39;three) (display &#39;one)) - This should fail to
<br>&gt; match the pattern altogether, as symbols which are already quoted are<br>&gt; matched for equality, rather than used as identifiers as above. This dies<br>&gt; miserably without returning #f.<br>&gt; (match &#39;(1 2 3) (one 2 three) (display three)) - This should immediately
<br>&gt; create an alias for the values 1 and 3 (&#39;one&#39; and &#39;three) and match the<br>&gt; second values for equality. Unfortunately, this is not the case.<br>&gt;<br>&gt;<br>&gt; &nbsp;(match &#39;(1 2 3) (one 2 three)
<br>&gt; &nbsp; &nbsp;(display three))<br>&gt; ... gives the following error:<br>&gt; &quot;let: bad syntax (not an identifier) in: 2&quot;<br>&gt;<br>&gt; It seems to be completely ignoring the conditional.<br>&gt; So I performed a test:
<br>&gt; (and (not (doublequoted-symbol? (quote 2)))<br>&gt; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(symbol? (quote 2)))<br>&gt; ... actually returns FALSE. So then why is the conditional statement<br>&gt; branching off completely wrong?<br>&gt;<br>
&gt; And then, here&#39;s the real kill. I can&#39;t debug the damn thing.<br>&gt; &nbsp;Doing so sends an alert window flying in my face, and a larger one behind<br>&gt; it.<br>&gt;<br>&gt; &quot;rest: expected argument of type &lt;non-empty list&gt;; given ()
<br>&gt;<br>&gt; &nbsp;=== context ===<br>&gt; C:\Program Files\PLT\collects\mzlib\list.ss:295:2: rest<br>&gt; C:\Program Files\PLT\collects\mztake\debug-tool.ss:804:10: can-step-out?<br>&gt;<br>&gt; rest: expected argument of type &lt;non-empty list&gt;; given ()
<br>&gt;<br>&gt; &nbsp;=== context ===<br>&gt; C:\Program Files\PLT\collects\mzlib\list.ss:295:2: rest<br>&gt; C:\Program Files\PLT\collects\mztake\debug-tool.ss:804:10: can-step-out?<br>&gt;<br>&gt; rest: expected argument of type &lt;non-empty list&gt;; given ()
<br>&gt;<br>&gt; &nbsp;=== context ===<br>&gt; C:\Program Files\PLT\collects\mzlib\list.ss:295:2: rest<br>&gt; C:\Program Files\PLT\collects\mztake\debug-tool.ss:804:10: can-step-out?<br>&gt;<br>&gt; rest: expected argument of type &lt;non-empty list&gt;; given ()
<br>&gt;<br>&gt; &nbsp;=== context ===<br>&gt; C:\Program Files\PLT\collects\mzlib\list.ss:295:2: rest<br>&gt; C:\Program Files\PLT\collects\mztake\debug-tool.ss:804:10: can-step-out?<br>&gt;<br>&gt; rest: expected argument of type &lt;non-empty list&gt;; given ()
<br>&gt;<br>&gt; &nbsp;=== context ===<br>&gt; C:\Program Files\PLT\collects\mzlib\list.ss:295:2: rest<br>&gt; C:\Program Files\PLT\collects\mztake\debug-tool.ss:804:10: can-step-out?<br>&gt;<br>&gt; rest: expected argument of type &lt;non-empty list&gt;; given ()
<br>&gt;<br>&gt; &nbsp;=== context ===<br>&gt; C:\Program Files\PLT\collects\mzlib\list.ss:295:2: rest<br>&gt; C:\Program Files\PLT\collects\mztake\debug-tool.ss:804:10: can-step-out?<br>&gt;<br>&gt; rest: expected argument of type &lt;non-empty list&gt;; given ()
<br>&gt;<br>&gt; &nbsp;=== context ===<br>&gt; C:\Program Files\PLT\collects\mzlib\list.ss:295:2: rest<br>&gt; C:\Program Files\PLT\collects\mztake\debug-tool.ss:804:10: can-step-out?&quot;<br>&gt;<br>&gt; ^ Can someone tell me what the hell is going on?
<br>&gt;<br></div></div>&gt; _________________________________________________<br>&gt; &nbsp; For list-related administrative tasks:<br>&gt; &nbsp; <a href="http://list.cs.brown.edu/mailman/listinfo/plt-scheme" target="_blank">http://list.cs.brown.edu/mailman/listinfo/plt-scheme
</a><br>&gt;<br>&gt;<br></blockquote></div><br>