Hi,
I don't know if I qualify as a maintainer, however you'll see from the ChangeLog that I've spent a lot of effort a few years ago to make Iterate work in an ANSI-CL environment and fix numerous bugs. I would not appreciate new developments that kill the original design.
Zach is very right. Packages are the CL way to have Iterate deal with extensions. That's why Iterate keys all extensions on symbols. symbols => packages.
Iterate is not LOOP. With loop, all clause "keywords" are found flat in the top-level list, that's why their packages don't matter (except for CL:LOOP).
Zach suggested
(iterate:defsynonym :for iterate:for)
Not sure if that works, because of the order of tests in the parser. It would be a fancy user-level hack. By that I mean it's a nice text book example, and a user may like it and use it in his/her code. But don't release code and libraries with that because as Zach pointed out, it would kill extensibility as several extensions would fight for the same keyword! That conflict does not happen with symbols of different packages.
Paraphrasing KMP, CL is a tool for building large systems. Don't break that.
Regards, Jörg Höhle