Hi,<br><br>In trying to take up the fall-through case challenge in &quot;a little macro exercise,&quot; I came up with this so far:<br><br>(define-syntax cas-cad-e<br>  (syntax-rules (break go!)<br>    ((_ go! v () a) (let ((mtc #f)) (call/cc (lambda (break) . a))))<br>
    ((cas-cad-e go! v (((bv ...) . b) . r) (a ...))<br>     (cas-cad-e go!<br>        v<br>        r<br>        (a ... (when (or mtc<br>                 (and (memq v &#39;(bv ...))<br>                      (begin (set! mtc #t) #t)<br>
                      ))<br>                 . b))))<br>    ((_ v br . d) (cas-cad-e go! v (br . d) ()))))<br><br>I haven&#39;t looked at anyone else&#39;s solution yet.  But setting aside questions of concision and correctness, I can&#39;t even run it.  Consider:<br>
<br>&gt; (cas-cad-e 2 ((1) 3))<br>reference to undefined identifier: mtc<br><br>I don&#39;t get it.  Isn&#39;t mtc safely bound in my let?  Here&#39;s the expansion:<br><br>&gt; (syntax-&gt;datum (expand &#39;(cas-cad-e 2 ((1) 3))))<br>
(let-values (((mtc) &#39;#f))<br>  (#%app<br>   call/cc<br>   (lambda (break)<br>     (if (let-values (((or-part) (#%top . mtc)))<br>           (if or-part<br>             or-part<br>             (if (#%app memq &#39;2 &#39;(1)) (begin (set! mtc &#39;#t) &#39;#t) &#39;#f)))<br>
       (begin &#39;3)<br>       (#%app void)))))<br><br>Thanks in advance for your help,<br>RM<br>