Hi,
Attila Lendvai wrote:
>fyi, there's a quite good walker in arnesi hiding platform dependency.
>the #L reader in arnesi is using it and macrolet works with it.
>unfortunately it should be factored out into a separate lib, just like
>the call/cc transformer using it. it's on my TODO, but long at the
>end.
Just for the record, any portable code walker is *not* a solution.
IIRC, last time I looked, arnesi cannot handle UNWIND-PROTECT or EVAL-WHEN --
for obvious reasons. Iterate has a code walker that is as good as a portable
code walker can go (portable in the ANSI CL glossary meaning).
What's needed is some non-portable integration with the various
implementations, so that the environment is handled correctly
(*macroexpand-hook* is not enough). Such functionality could be factored out
indeed, in a separate library. Maybe also PCL's code-walker has
implementation-specific code?
>> BTW, there's that empty CVS directory in the iterate project
>directory. Shall I delete it or does it serve some purpose?
>i don't have it in my repo.
Oh, it's not in Darcs, it's in ~iterate/, not in the Darcs/ subdir.
BTW, unsatisfied with the limitations inherent in Iterate's current
implementation, I've been looking at various list comprehension designs (Mario
Latendresse, Sven-Olof Nyström, Olin Shivers, SRFI-42). Iterate is still
interesting and it's unclear to me whether the actual problem is either:
- Iterate's design, which requires a code-walker to detect gatherers nested
deep within the body
- ANSI CL limitations, which make macros that depend on a code-walker a can of
worms, making designs like Iterate hard if not unsuitable.
Note that LOOP, SRFI-42 and all the others do not depend on a code walker. They
all supply their own grammar and thus know where clauses can appear (at
top-level of the form).
BTW2, send me an e-mail if you want an enhanced version of Mario Latendresse's
comprehension macro. (When I'll have more time, I'll post to cliki).
Regards,
Jörg Höhle
_______________________________________________
iterate-devel site list
[email protected]
http://common-lisp.net/mailman/listinfo/iterate-devel