xsl-list
[Top] [All Lists]

[xsl] XPath 3.0 How to implement the function composition operator?

2012-10-15 17:09:13
Hi Folks,

How is function composition implemented in XPath 3.0?

Example: Suppose I want to compose these two function:

    1. increment: this function increases its argument by 1.

    2. double: this function multiplies its argument by 2.

In Haskell I can compose the two functions like so:

    f = double . increment

And then I can apply the composed functions to an argument:

    f 2

The result is 6.

How is f implemented in XPath 3.0?

Here is my attempt, which is not correct:

            let $increment :=  function($x as xs:integer) {$x + 1},
                 $double        :=  function($y as xs:integer) {$y * 2},
                 $compose   :=  function(
                                                               $a as 
function(item()*) as item()*, 
                                                               $b as 
function(item()*) as item()*
                                                            ) 
                                                           as item()* 
                                               {$b($a)},
                $f  :=  $compose($double, $increment)
            return $f(2)

What is the correct way?

/Roger

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--