<p>Thanks for the input Joerg. That said I think that there still needs to be a discussion here.</p>
<p>I think that it is important to note that Budden has sufficiently convinced me that this will cause approximately zero symbol collisions because 99% of all Iterate extensions are done by specializing on the keyword options of existing clauses. In fact, in the short term, the only possibility of a collision is if someone decides to declare a clause that explicitly collides with one of Budden's keyword shortcuts, like a (defclause :FOR ...). This is probably not a valid concern. As I stated, the real concern I can see is that this could be the first step down the road to limited extensiblility in the Iterate library.</p>
<p>I think that this is a matter of style and consistency, and I'm not sure that style should stop anyone from doing something that would provide a clear benefit. The real question is, will keyword short cuts provide over-all benefit to users or will they be detrimental. Unfortunately, this extension seems to provide a short-term benefit and yet, possibly, a long-term detriment. This seems to come down to a judgement call of the maintainer and the community.</p>
<p>Zach<br></p>
<p>On Wed, Oct 17, 2012 at 6:55 AM, <<a href="mailto:Joerg-Cyril.Hoehle@t-systems.com">Joerg-Cyril.Hoehle@t-systems.com</a>> wrote:<br>
> Hi,<br>
><br>
> I don't know if I qualify as a maintainer, however you'll see from the<br>
> ChangeLog that I've spent a lot of effort a few years ago to make<br>
> Iterate work in an ANSI-CL environment and fix numerous bugs.<br>
> I would not appreciate new developments that kill the original design.<br>
><br>
> Zach is very right. Packages are the CL way to have Iterate deal<br>
> with extensions. That's why Iterate keys all extensions on symbols.<br>
> symbols => packages.<br>
><br>
> Iterate is not LOOP. With loop, all clause "keywords" are found flat in the<br>
> top-level list, that's why their packages don't matter (except for CL:LOOP).<br>
><br>
> Zach suggested<br>
>>(iterate:defsynonym :for iterate:for)<br>
> Not sure if that works, because of the order of tests in the parser.<br>
> It would be a fancy user-level hack. By that I mean it's a nice text<br>
> book example, and a user may like it and use it in his/her code.<br>
> But don't release code and libraries with that because as Zach pointed<br>
> out, it would kill extensibility as several extensions would fight for<br>
> the same keyword!<br>
> That conflict does not happen with symbols of different packages.<br>
><br>
> Paraphrasing KMP, CL is a tool for building large systems.<br>
> Don't break that.<br>
><br>
> Regards,<br>
> Jörg Höhle<br>
</p>