[xquery-talk] Global variables in XQuery
Michael Kay
mhk at mhk.me.uk
Thu Oct 5 12:52:15 PDT 2006
> Nevertheless, there are
> many occasions in which a programmer needs to both read and
> write a global variable, especially when recursive functions
> are involved. For instance, suppose I want to know the number
> of recursive calls of my recursive function (this number is
> an lower bound of the space complexity of the function).
This kind of use-case - producing a secondary result that's essentially
diagnostic or instrumentation output - was what motivated me to add
saxon:assign to my XSLT processor, a decision I have bitterly regretted
because it gets abused by people who just use it to write pure procedural
code which has a nasty habit of breaking under optimization. In the light of
this experience I think the proposal currently on the table to add
procedural extensions to XQuery (mentioned by Jonathan) is probably a bad
idea. I think it's much better to use a procedural pipeline language [1] to
string together non-procedural components to assemble an application.
The right way to implement a counter for instrumentation purposes is
probably by calling an extension function.
[1] http://www.w3.org/TR/xproc/
Michael Kay
http://www.saxonica.com/
More information about the talk
mailing list