<br><br><div class="gmail_quote">On Wed, May 9, 2012 at 11:02 AM, Eli Barzilay <span dir="ltr">&lt;<a href="mailto:eli@barzilay.org" target="_blank">eli@barzilay.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="im">A week ago, Laurent wrote:<br>
&gt; Hi,<br>
&gt;<br>
&gt; I didn&#39;t fully read Eli&#39;s very detailed answer, so hopefully I won&#39;t<br>
&gt; repeat what he said.<br>
&gt;<br>
&gt; Here, to me it seems the right approach is to keep hygiene, so that<br>
&gt; you can scope your INDEXes as you want, and so that you know exactly<br>
&gt; what happens without needing to know the details of `ranged&#39; and<br>
</div>&gt; `interfere&#39; to know where your indexes are bound: [...]<br>
<br>
Yes, that&#39;s a common way to deal with these problems, but it doesn&#39;t<br>
work well. You basically end with writing these names all over the<br>
place, which can become a real problem when you want to build a<br>
language with these things.  In our syntax parameters paper there is<br>
an example that shows how awkward it can get -- say that you have an<br>
anaphoric conditional that binds an `it&#39;, and a `loop&#39; that binds<br>
`abort&#39;.  If you want to implement a `while&#39; loop that uses both, then<br>
uses of your macro would look like:<br>
<br>
  (while abort it<br>
    ... code that can use `abort&#39; and/or `it&#39; ...<br>
<div class="HOEnZb"><div class="h5">    )<br>
<br></div></div></blockquote><br></div>So maybe a compromise would be to use parameters for most (anaphoric) cases, but still allow to specify a lexically scoped (&quot;hygienic&quot;) binding for particular cases, e.g.:<br>

(while #:abort top-while-abort #:it top-while-it<br>  (while <br>    ....use the usual `abort&#39; for the inner loop or the `top-while-abort&#39; to escape the top while....)<br>  ....)<br><br>?<br><br>Laurent<br>