Hi,
That's the kind of use case that the scripting extension of XQuery
(XQueryP) that Jonathan was mentioning here is supposed to solve.
This is not an isolated use case, that's a more and more frequent use
case scenario, and the current XQuery 1.0, nor the Update spec do
no good for it.
I think it should be possible to rewrite those functions in a way
that makes them if not side-effect free at least idempotent. If you
then have later functions depend on input values from earlier
functions you should be safe. E.g. session:invalidate() should be
session:invalidate($session-token) and session:begin() should return
that $session-token. I'd say it's probably worth the effort.
The scripting extension of XQuery should help though, it applies the
side-effects right away and guarantees a deterministic evaluation
order
for subexpressions with side-effects (among other things).
I'm not sure it's possible to do so in every use case, and especially
if it's also elegant to do so, so there might be a case for XQueryP.
Regards,
Martin
--
Martin Probst
X-Hive Corporation
martin-aAA5O4jD/7TQT0dZR+AlfA@xxxxxxxxxxxxxxxx
|