Skip to content
XQuery 3.0 higher order functions helper library
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
samples
LICENSE
README.md
functional.xq

README.md

library module: http://snelson.org.uk/functions/functional

functional.xq

A library of useful functionality for working with XQuery 3.0 higher order functions. Includes a number of functions from the standard Haskell prelude, as well as functions to perform currying, function composition, and Y-combination.

Author: John Snelson
Version: 0.9

Table of Contents

Functions

id#1

id($a
)

Returns the argument

Params

  • $a

incr#1

incr($a
)

Adds one to the argument

Params

  • $a

flip#1

flip(
  $f as function(item()*,item()*) as item()*
) as  function(item()*,item()*) as item()*

Reverses the order of the arguments in the function passed as an argument

Params

  • $f as function(item()*,item()*) as item()*

Returns

  • function(item()*,item()*) as item()*

iterate#2

iterate($f, $a
)

Returns an infinite sequence of ($a, $f($a), $f($f($a)), ...). Only really useful on an implementation that supports lazy evaluation

Params

  • $f

  • $a

repeat#1

repeat($a
)

Returns an infinite sequence of the argument sequence repeated. Only really useful on an implementation that supports lazy evaluation

Params

  • $a

take#2

take($n, $l
)

Returns the first $n items from the sequence $l

Params

  • $n: the number of items to return

  • $l: the sequence to return items from

until#3

until($p, $f, $a
)

Tests the predicate $p($a), returning $a if true, or until($p, $f, $f($a)) otherwise.

Params

  • $p: the predicate function

  • $f: the function to iteratively apply

  • $a: the initial starting value

ref#1

ref($arg as item()*
) as  function() as item()*

Wrap a sequence as a function item

Params

  • $arg as item()*

Returns

  • function() as item()*

deref#1

deref($arg as function() as item()*
) as  item()*

Unwrap a sequence from a function item

Params

  • $arg as function() as item()*

Returns

  • item()*

curry#1

curry($f as function(*)
) as  function(item()*) as item()*

Curries a function (up to arity 10). Takes a function that accepts a number of arguments, and returns a function that accepts the first argument, then returns a new function to accept the second, and so on.

Params

  • $f as function(*): The function to curry.

Returns

  • function(item()*) as item()*: The curried version of the function.

Errors

If $f has an arity greater than 10 or less than 1.

Y#1

Y($f as function(*)
) as  function(*)

Y combinator for a function (up to arity 10). Partially applies a function as the first argument to itself, so that it can call itself recursively using the value. Returns the partially applied function. ie:

  Y(function($f,$a) { if($a gt 0) then ($a, $f($a - 1)) else $a })(10)  

Params

  • $f as function(*): The function to partially apply to itself.

Returns

  • function(*): The partially applied function.

Errors

If $f has an arity greater than 10 or less than 1.

compose#1

compose($functions as function(*)+
) as  function(*)

Compose a sequence of functions into a single function. All the functions except the last one must have an arity of 1. The last function may accept between 0 and 10 arguments. ie:

  compose((fn:count#1, fn:filter#2))  

Params

  • $functions as function(*)+: The sequence of functions to compose

Returns

  • function(*): The composed function.

Errors

If the last function has an arity greater than 10.

compose#2

compose($f1 as function(*), $f2 as function(*)
) as  function(*)

Compose two functions into a single function. All the functions except the last one must have an arity of 1. The last function may accept between 0 and 10 arguments. ie:

  compose(fn:count#1, fn:filter#2)  

Params

  • $f1 as function(*)

  • $f2 as function(*)

Returns

  • function(*): The composed function.

Errors

If the last function has an arity greater than 10.

compose#3

compose($f1 as function(*), $f2 as function(*), $f3 as function(*)
) as  function(*)

Compose three functions into a single function. All the functions except the last one must have an arity of 1. The last function may accept between 0 and 10 arguments.

Params

  • $f1 as function(*)

  • $f2 as function(*)

  • $f3 as function(*)

Returns

  • function(*): The composed function.

Errors

If the last function has an arity greater than 10.

compose#4

compose($f1 as function(*), $f2 as function(*), $f3 as function(*), $f4 as function(*)
) as  function(*)

Compose four functions into a single function. All the functions except the last one must have an arity of 1. The last function may accept between 0 and 10 arguments.

Params

  • $f1 as function(*)

  • $f2 as function(*)

  • $f3 as function(*)

  • $f4 as function(*)

Returns

  • function(*): The composed function.

Errors

If the last function has an arity greater than 10.

compose#5

compose($f1 as function(*), $f2 as function(*), $f3 as function(*), $f4 as function(*), $f5 as function(*)
) as  function(*)

Compose five functions into a single function. All the functions except the last one must have an arity of 1. The last function may accept between 0 and 10 arguments.

Params

  • $f1 as function(*)

  • $f2 as function(*)

  • $f3 as function(*)

  • $f4 as function(*)

  • $f5 as function(*)

Returns

  • function(*): The composed function.

Errors

If the last function has an arity greater than 10.

compose#6

compose($f1 as function(*), $f2 as function(*), $f3 as function(*), $f4 as function(*), $f5 as function(*),
  $f6 as function(*)
) as  function(*)

Compose six functions into a single function. All the functions except the last one must have an arity of 1. The last function may accept between 0 and 10 arguments.

Params

  • $f1 as function(*)

  • $f2 as function(*)

  • $f3 as function(*)

  • $f4 as function(*)

  • $f5 as function(*)

  • $f6 as function(*)

Returns

  • function(*): The composed function.

Errors

If the last function has an arity greater than 10.

compose#7

compose($f1 as function(*), $f2 as function(*), $f3 as function(*), $f4 as function(*), $f5 as function(*),
  $f6 as function(*), $f7 as function(*)
) as  function(*)

Compose seven functions into a single function. All the functions except the last one must have an arity of 1. The last function may accept between 0 and 10 arguments.

Params

  • $f1 as function(*)

  • $f2 as function(*)

  • $f3 as function(*)

  • $f4 as function(*)

  • $f5 as function(*)

  • $f6 as function(*)

  • $f7 as function(*)

Returns

  • function(*): The composed function.

Errors

If the last function has an arity greater than 10.

compose#8

compose($f1 as function(*), $f2 as function(*), $f3 as function(*), $f4 as function(*), $f5 as function(*),
  $f6 as function(*), $f7 as function(*), $f8 as function(*)
) as  function(*)

Compose eight functions into a single function. All the functions except the last one must have an arity of 1. The last function may accept between 0 and 10 arguments.

Params

  • $f1 as function(*)

  • $f2 as function(*)

  • $f3 as function(*)

  • $f4 as function(*)

  • $f5 as function(*)

  • $f6 as function(*)

  • $f7 as function(*)

  • $f8 as function(*)

Returns

  • function(*): The composed function.

Errors

If the last function has an arity greater than 10.

compose#9

compose($f1 as function(*), $f2 as function(*), $f3 as function(*), $f4 as function(*), $f5 as function(*),
  $f6 as function(*), $f7 as function(*), $f8 as function(*), $f9 as function(*)
) as  function(*)

Compose nine functions into a single function. All the functions except the last one must have an arity of 1. The last function may accept between 0 and 10 arguments.

Params

  • $f1 as function(*)

  • $f2 as function(*)

  • $f3 as function(*)

  • $f4 as function(*)

  • $f5 as function(*)

  • $f6 as function(*)

  • $f7 as function(*)

  • $f8 as function(*)

  • $f9 as function(*)

Returns

  • function(*): The composed function.

Errors

If the last function has an arity greater than 10.

compose#10

compose($f1 as function(*), $f2 as function(*), $f3 as function(*), $f4 as function(*), $f5 as function(*),
  $f6 as function(*), $f7 as function(*), $f8 as function(*), $f9 as function(*), $f10 as function(*)
) as  function(*)

Compose ten functions into a single function. All the functions except the last one must have an arity of 1. The last function may accept between 0 and 10 arguments.

Params

  • $f1 as function(*)

  • $f2 as function(*)

  • $f3 as function(*)

  • $f4 as function(*)

  • $f5 as function(*)

  • $f6 as function(*)

  • $f7 as function(*)

  • $f8 as function(*)

  • $f9 as function(*)

  • $f10 as function(*)

Returns

  • function(*): The composed function.

Errors

If the last function has an arity greater than 10.

Generated by xquerydoc

You can’t perform that action at this time.