[iterate-devel] iterate 1.3?
Hoehle, Joerg-Cyril
Joerg-Cyril.Hoehle at t-systems.com
Wed Feb 23 08:54:44 UTC 2005
Marco,
>2) i'd like to make sure no one else has
> other fixes lying around.
Well, I have more stuff that I haven't yet sent to anyone.
>1) antifuchs recently gave me write access to the iterate project on
> common-lisp.net. i'd like to use my new power to create a new
> release of iterate (there's been a lot of work since
> 1.3pre1). anybody have problems with this?
For the record, my code is like a fork on iterate-1.0.9. 'Antifuchs' 1.3pre1 is based on his augment-environment code, which I had somewhat promised to review, but never integrated into my code branch (for I was generally suspicious about macroexpansion-hooks to help macrolet).
I haven't yet found the time to write about my recent review, although it's ready in my mind. The executive summary is that I demonstrate that it IMHO fixes too little for too many possibilities to break things, and I demonstrate that a *macroexpand-hook* cannot reliably expand macros or prevent the "expansion" of functions. That's general about *macroexpand-hook*. Then I also point at a concrete bug in the code.
The only benefit of that code is that it makes nested in-hashtable iterations work. But I can provide examples with macrolet which will lead to incorrect code with 1.3pre1.
My code I sent you in January/February was one with many bug fixes and few extensions, the last one I wanted to create before I would myself dig into and face the macrolet issue.
My current code (not yet sent to anyone) (and which I consider not yet finished) does the following:
+ symbol-macrolet is accepted and does not cause expansion errors. The expansion must not generate iterate clauses, but that's a restriction people can live with, I believe. I added testcases involving with-slots and with-accessors.
+ macrolet is accepted, but even stronger restrictions apply. Iterate now signals a warning "don't know how to walk ..., so iterate clauses inside it will not be seen". That's as far as one can go with macrolet and still expect stability, robustness, and correctness.
But it does not work with
(iter outer in-hashtable (iter in-hashtable (in outer ...)))
since that would require expansion within a macrolet body.
I would like to release that (when it'll be ready), because
+ it is progress against any previous stable versions which simply rejected all occurrences of macrolet, so general code (not involving iterate) can now compile.
+ it is still stable.
+ releasing it would allow people to play with it and give feedback about these limitations. They will certainly be happy that Iterate now processes general code, e.g. containing CL:LOOP and loop-finish that result from expansion of arbitrary forms.
Since then, I have noticed one more bug and added even more testcases (the lack of testcases is appaling, but I've steadily been increasing coverage).
So here's what I suggest:
+ Please release what I sent you in January/February (not the 13th of December, which is quite "old" already :)
+ Give me time to write that review about *macroexpand-hook and augment-environment. Now that I said so much about it, I think I owe you all to write it up in detail.
+ Give me a little time to finish my current limited macrolet support
+ Then produce a new release with macrolet, yet another bugfix and more testcases that I've added and continue to add.
Regards,
Jorg Hohle.
More information about the iterate-devel
mailing list