<br><br><div class="gmail_quote">On Wed, May 9, 2012 at 11:02 AM, Eli Barzilay <span dir="ltr"><<a href="mailto:eli@barzilay.org" target="_blank">eli@barzilay.org</a>></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>
> Hi,<br>
><br>
> I didn't fully read Eli's very detailed answer, so hopefully I won't<br>
> repeat what he said.<br>
><br>
> Here, to me it seems the right approach is to keep hygiene, so that<br>
> you can scope your INDEXes as you want, and so that you know exactly<br>
> what happens without needing to know the details of `ranged' and<br>
</div>> `interfere' to know where your indexes are bound: [...]<br>
<br>
Yes, that's a common way to deal with these problems, but it doesn'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', and a `loop' that binds<br>
`abort'. If you want to implement a `while' loop that uses both, then<br>
uses of your macro would look like:<br>
<br>
(while abort it<br>
... code that can use `abort' and/or `it' ...<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 ("hygienic") binding for particular cases, e.g.:<br>
(while #:abort top-while-abort #:it top-while-it<br> (while <br> ....use the usual `abort' for the inner loop or the `top-while-abort' to escape the top while....)<br> ....)<br><br>?<br><br>Laurent<br>