[xquery-talk] Setting global variables
Ronald Bourret
rpbourret at rpbourret.com
Wed Oct 31 12:26:01 PST 2007
Michael Kay wrote:
> Sounds like you're having difficulty getting procedural programming out of
> your mindset... It's this concept of "later" that gives it away. In
> functional programming, there is no time axis, no concept of "earlier" or
> "later".
Interesting point. I hadn't thought about this.
Is the whole point of functional programming to allow better
optimization by the processor / compiler? Or are there other advantages
as well?
> The answer is to initialize the global variable to the subset of the
> document that's needed, from within its own initializer.
As I mentioned to John, I can't do this because the document name can
change. If I could pass the document name from a point external to the
library, this would solve my problem. (I suppose I should check the
Saxon documentation and see if this is possible...)
> Incidentally, the problem of passing parameters through functions that don't
> actually look at them directly sounds like a request for something like XSLT
> 2.0's tunnel parameters.
It does.
> It looks as if XQuery is going to be extended to turn it into a procedural
> language through "scripting extensions". As far as I'm concerned, that's a
> great shame - being forced to learn to use functional programming has made
> me a much better programmer.
How so?
I've had to jump through a slightly different set of hoops, but it all
feels about the same as performing structured programming. By
"structured programming", I mean breaking your application into many
small functions and only passing to each function the information it
needs. This as opposed to 70s-style spaghetti code, with lots of global
variables and GOTOs. That was a big difference for me and led to much
cleaner code.
Of course, here I am asking for global variables :)
-- Ron
More information about the talk
mailing list