Package net.sf.saxon.functions.hof
Class CurriedFunction
java.lang.Object
net.sf.saxon.functions.AbstractFunction
net.sf.saxon.functions.hof.CurriedFunction
- All Implemented Interfaces:
Callable,FunctionItem,GroundedValue,Item,Sequence
A function obtained by currying another function: that is, the result of a partial function application
-
Constructor Summary
ConstructorsConstructorDescriptionCurriedFunction(FunctionItem targetFunction, Sequence[] boundValues, int[] unboundArgMap) Create a curried (or partially applied) function -
Method Summary
Modifier and TypeMethodDescriptioncall(XPathContext context, Sequence[] args) Invoke the functionvoidOutput information about this function itemGet the function annotations (as defined in XQuery).intgetArity()Get the arity of the function (equal to the number of placeholders)Get a description of this function for use in error messages.Get the item type of the function itemGet the name of the function, or null if it is anonymousMethods inherited from class net.sf.saxon.functions.AbstractFunction
atomize, deepEqual40, deepEquals, effectiveBooleanValue, getOperandRoles, getUnicodeStringValue, getUniqueIdentifier, isArray, isMap, isTrustedResultType, makeNewContext, simplify, toShortString, typeCheckMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface net.sf.saxon.om.FunctionItem
getGenre, isSequenceVariadicMethods inherited from interface net.sf.saxon.om.GroundedValue
asIterable, concatenate, containsNode, materializeMethods inherited from interface net.sf.saxon.om.Item
getLabel, getLength, getStringValue, head, isStreamed, itemAt, iterate, reduce, subsequenceMethods inherited from interface net.sf.saxon.om.Sequence
makeRepeatable
-
Constructor Details
-
CurriedFunction
Create a curried (or partially applied) function- Parameters:
targetFunction- the base function to be curriedboundValues- the values to which the arguments are to be bound, representing unbound values (placeholders) by null. So if the arguments are (4, ?, 5) then this array will be [4, null, 5]. If keywords are used in the call then they will have been resolved to argument positions. The values supplied must conform to the required type: coercion is the responsibility of the caller.unboundArgMap- for unbound arguments (placeholders), mapping from argument positions in the curried function to argument positions in the target function. If the arguments are (4, ?, 5) then this array will be [1], indicating that the first and only argument in the curried function is bound to the second (position==1) argument in the underlying function. If keywords are used in the call then this mapping may be non-trivial; for example if the base function is f(x,y) and the partial function application is f(y:=?, x:=?), then this array will contain [1,0]. The length of this array is equal to the arity of the curried function.
-
-
Method Details
-
getFunctionItemType
Get the item type of the function item- Returns:
- the function item's type
-
getFunctionName
Get the name of the function, or null if it is anonymous- Returns:
- the function name, or null for an anonymous inline function
-
getDescription
Get a description of this function for use in error messages. For named functions, the description is the function name (as a lexical QName). For others, it might be, for example, "inline function", or "partially-applied ends-with function".- Returns:
- a description of the function for use in error messages
-
getArity
public int getArity()Get the arity of the function (equal to the number of placeholders)- Returns:
- the number of arguments in the function signature
-
getAnnotations
Get the function annotations (as defined in XQuery). Returns an empty list if there are no function annotations. The function annotations on a partially applied function are the same as the annotations on its base function.- Specified by:
getAnnotationsin interfaceFunctionItem- Overrides:
getAnnotationsin classAbstractFunction- Returns:
- the function annotations
-
call
Invoke the function- Parameters:
context- the XPath dynamic evaluation contextargs- the actual arguments to be supplied- Returns:
- the result of invoking the function
- Throws:
XPathException- if the function reports a dynamic error
-
export
Output information about this function item- Specified by:
exportin interfaceFunctionItem- Overrides:
exportin classAbstractFunction- Parameters:
out- the destination to write to- Throws:
XPathException- if things go wrong
-