Ah, I was wondering what the many strange files meant :-)
arch is strange, even with the wiki it took me some time to figure out how to make a patch at all. You can apply an undo "patch" by extracting it into the source tree, and issuing a tla redo. Just in case...
I wonder why people submitting patches tend to write code against Iterate's internal structures, instead of writing using the external interface?
Among other human factors, it could be the doc is not clear enough about this distinction. And after looking at the code it wasn't obvious (for me, newbie warning).
After all, being able to expand Iterate via regular macros was one of John Amsterdam's design goals.
What about something along (defmacro-clause if-first-iteration (then &optional else) `(progn (with ,(gensym) = t) (if ,gensym ,then ,else) (after-each (setq ,gensym nil)))
If you really want to hack the internals, I suggest not introducing another special variable, but instead add to the existing binding variables. You can still generate a single variable for all uses of IF-FIRST-ITERATION in one Iterate by using a technique similar to that of iter::return-extremum-code. That would integrate better IMHO into the existing code base.
Thanks for the suggestion, I will look into it and get back with a hopefully less intrusive patch, without introducing a new special variable.
- attila