[Bese-devel] new interpter and iterate
Marco Baringer
mb at bese.it
Thu Aug 4 12:07:29 UTC 2005
the new cps interepreter (which i'll rename soon since it doesn't
actually cps transform anything) has one major drawback: it doesn't
really work within iterate. the reason for this is simple, let's
pretend you have this code (which does in fact appear in ucw's source
code):
(iterate
(for object in some-list)
(let ((object object))
(<ucw:a :action (do-something object) "Do something.")))
the problem is that with-call/cc will, when macroexpanded, attempt to
walk the (do-something object) form. unfortunetly iterate will do the
macroexpansion instead of the complier so when the compiler
environment passed to with-call/cc doesn't contain a reference to
OBJECT and the walker thinks OBJECT is a free variable, when in fact
it's a local. bad things follow.
we've basically got two options:
1) fix iterate.
2) warn everyone that, as of now, <ucw:input or <ucw:form or <ucw:a
tags inside iterate forms are a VERY BADY idea. (though they may
still accidentally work).
for now i'll take option #2:
As of now <ucw:input or <ucw:form or <ucw:a tags inside iterate forms
are a VERY BADY idea. (though they may still accidentally work).
--
-Marco
Ring the bells that still can ring.
Forget the perfect offering.
There is a crack in everything.
That's how the light gets in.
-Leonard Cohen
More information about the bese-devel
mailing list