Re: [iterate-devel] Version plan for Iterate 1.4 and 1.5
Marc Battyani wrote:
Plans for 1.5: + Move more code from the initially / loop prologue section inside the let binding initialization, which might cause some user code to fail because of code movement
Please don't wreck that! It's the reason I initially started to use iterate. Those parts (prologue/epilog/var bindings) are under (and badly) specified in LOOP and implementations differ on this. So let's keep it in a sane way.
What I mean is that Iterate is inconsistent. Did you know that WITH clauses get completely placed inside the surrouding let, while FOR ... ON <list> gets set in the :initially section, while other (e.g. reducing ...) also get set inside LET? I wanted to move as much as possible inside the surrouding LET. There's a *small* posibility that user code will break. In fact, I expect none of the current tests to fails as a result of such a change.
For a farther future: move to another design for iteration Do you already have some ideas on this ? No. gclcvs (which passed most Iterate tests) reminded me of the other Iterate package featuring gathering. I'll look at that.
What really disturbs me with Iterate has a design weakness about referential transparency and inadvertent capture, e.g. (iter (with-some-other-macro (collect foo))) when with-some-other-macro itself expands to an iterate loop. It similar to those cases when an implicit block would change the target of a return statement. There's IMHO no way around that deficiency in Iterate. LOOP OTOH is robust against that, since it knows no clauses nested inside normal Lisp forms. Regards, Jörg.
participants (1)
-
Hoehle, Joerg-Cyril