You don't really need them, they're just syntactical sugar making the code more readable for everybody familiar with functional programming.
- `head($sequence)` could be written as `$sequence[1]` - `tail($sequence)` could be written as `$sequence[position()>1]` -- Jens Erat [phone]: tel:+49-151-56961126 [mail]: mailto:[email protected] [jabber]: xmpp:[email protected] [web]: http://www.jenserat.de PGP: 350E D9B6 9ADC 2DED F5F2 8549 CBC2 613C D745 722B Am 20.05.2013 um 16:31 schrieb Marco Lettere <[email protected]>: > Thanks a lot. > I'm really wondering how I was able to overlook "head" and "tail" .... maybe > the age .... :-( > > M. > > On 05/20/2013 03:44 PM, Jens Erat wrote: >> hi Marco, >> >> using recursion is easily possible (and the only way to solve that problem >> without using maps), just write a small XQuery function like >> >> declare function local:interprete($operations as item()*, $set as item()*) >> as item()* { >> let $op := head($operations) >> let $ops := tail($operations) >> let $intermediate := >> switch($op/@operator) >> case "UNION" return ($set, $op/item[not(@name = $set/@name)]) >> case "INTERSECT" return $set[@name = $op/item/@name] >> case "DIFFERENCE" return $set[not(@name = $op/item/@name)] >> default return error() >> return >> if ($ops) >> then >> local:interprete($ops, $intermediate) >> else $intermediate >> }; >> >> Which you would call using `local:interpret(//set, ())`. I guess the code >> should be small enough to be self-explaining. I seems to work, but I didn't >> test with much more than the input you provided, better do some additional >> tests on production data before using it. >> >> If you want to compare whole nodes instead of their name attribute, use >> `fn:deep-equal()` instead of the name comparisons. You will have to use some >> explicit loop, [quantified expressions] should get handy for that. >> >> Regards from Lake Constance, Germany, >> Jens Erat >> >> [quantified expressions]: >> http://www.w3.org/TR/xpath20/#id-quantified-expressions >> > > _______________________________________________ > BaseX-Talk mailing list > [email protected] > https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk _______________________________________________ BaseX-Talk mailing list [email protected] https://mailman.uni-konstanz.de/mailman/listinfo/basex-talk

