[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

More information about the talk mailing list