Subject: Re: [xsl] XPath 3.0 How to implement the function composition operator? From: Michael Kay <mike@xxxxxxxxxxxx> Date: Tue, 16 Oct 2012 00:02:05 +0100 |
$compose := function($a as function(item()*) as item()*, $b as function(item()*) as item()*) as (function(item()*) as item()*) { function($c as item()*) as item()* { $b($a($c)) } }
Michael Kay Saxonica
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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] XPath 3.0 How to implement th, Costello, Roger L. | Thread | Re: [xsl] XPath 3.0 How to implemen, Dimitre Novatchev |
[xsl] XPath 3.0 How to implement th, Costello, Roger L. | Date | Re: [xsl] XPath 3.0 How to implemen, Dimitre Novatchev |
Month |