RE: [xsl] [XPath 3.0] Why should I bother specifying the "arity" of a function that I invoke?

Subject: RE: [xsl] [XPath 3.0] Why should I bother specifying the "arity" of a function that I invoke?
From: "Costello, Roger L." <costello@xxxxxxxxx>
Date: Wed, 31 Oct 2012 22:09:51 +0000
>  concat#3 is an expression that returns a function item.

So is concat#3 equivalent to this partial function application:

     concat(?, ?, ?)

If yes, when is one preferred over the other?

/Roger

-----Original Message-----
From: Michael Kay [mailto:mike@xxxxxxxxxxxx]
Sent: Wednesday, October 31, 2012 5:54 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] [XPath 3.0] Why should I bother specifying the "arity" of a
function that I invoke?


On 31/10/2012 21:06, Costello, Roger L. wrote:
> Hi Folks,
>
> The XPath 3.0 specification says that when a named function is invoked you
should specify the number of arguments (i.e., the arity):
>
> 	NamedFunctionRef 	   ::=    	EQName "#" IntegerLiteral
>
> Here is an example:
>
>     	concat#3('Section', ': ', 1)
>
> But this works just as well:
>
> 	concat('Section', ': ', 1)
>
> So why should I bother specifying the arity? Is there a case where I *must*
specify the arity?
>
concat#3 is an expression that returns a function item. You need it if
you are going to store the function item in a variable, pass it to
another function, return it from a function, or do other things that you
can do with run-time values.

You don't need a run-time function item if you know statically what
function to call and if the only thing you want to do is to call the
function.

Michael Kay
Saxonica

Current Thread