[iterate-devel] Fwd: if-first-iteration, a little better version as an arch patch

Attila Lendvai attila.lendvai at gmail.com
Mon Jan 9 13:45:46 UTC 2006


> 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



More information about the iterate-devel mailing list