RE: [xsl] XSLT 2.0: Are arguments to functions evaluated eagerly or lazily?

Subject: RE: [xsl] XSLT 2.0: Are arguments to functions evaluated eagerly or lazily?
From: Justin Johansson <procode@xxxxxxxxxx>
Date: Wed, 18 Jul 2007 19:30:13 +0900
Thanks for that Michael.

At 08:41 AM 18/07/2007 +0100, you wrote:
>> Supposing you have a function that is passed two arguments, 
>> say, a condition argument, test, and an argument,  value, 
>> that returns value if test is true and the empty sequence 
>> otherwise, is the value argument evaluated at the time of 
>> calling the function if the test argument is false?  
>
>The spec leaves this question open - the implementation can do either.
>Yes, Saxon does so (usually!). There are exceptions, for example if the

Yes, well, I would not expect anything less of Saxon :-)

>But for this particular case, I can't see that you're achieving any useful
>brevity or abstraction by writing select="f:cond(condition, value)" rather
>than select="if (condition) then value else ()".

For a moment just now I thought that I must have had a blond moment when
posing my question with that particular example but now I must be having a
blond moment even considering that I may have had a blond moment!

Of the face of it you are correct but the impetus of my question and the
example is due this functional programming kick that I'm on at the moment.

LISP has two such functions 'cond' and 'if' which do the same thing as my
two examples.  Now I'm not a LISP programmer and maybe there is no
if-then-else statement in LISP which therefore would make necessity for
said functions.  However I can see the usefulness of making such functions
available in a functional  programming style of library for XSLT as these
functions could be used as arguments to the Scheme-like functions foldl,
map, filter et. al.


Justin Johansson
Freelance XML / XSLT / XQuery Developer
Australia

procode(at)tpg(dot)com(dot)au

Current Thread