[iterate-devel] bug report
Attila Lendvai
attila.lendvai at gmail.com
Mon Aug 13 15:54:22 UTC 2007
> Attila Lendvai wrote:
> >(in fact it calls macroexpand with nil env, i think).
> No, it doesn't.
> >this won't be quickly fixed, but corrent me if i'm wrong.
> No macro should call macroexpand with the nil env. That's completely wrong, in most cases. Iterate properly uses the env parameter. The env parameter is there for a purpose.
i was too hasty to answer misinformation, not to mention not reading
the other threads first, where the discussion continued. sorry for
that.
> What Iterate (and many others) cannot handle properly is local definitions within its body, e.g.
> (Iterate (macrolet (flet ...)))
> It serves nothing if Iterate would keep an internal list of local functions or macros, as it cannot communicate this list (i.e. environment) to other macros. That's why CLtL2 had AUGMENT-ENVIRONMENT.
> Alas, why CLtL2's environment API is not good enough is really complicated.
> BTW, *MACROEXPAND-HOOK* is of no help either.
hm, i don't have too much knowledge about environment augmentation,
but the code walker (call/cc stuff) in arnesi does seem to work. you
can have a peek at lexenv.lisp, but it seems to be only a subset of
the CLtL2 api, so it's probably not much help then.
hth anyway,
--
attila
More information about the iterate-devel
mailing list