[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