The function values functions allow you to pass a function value as a parameter to another function. You can also pass in the location of the implementation of a function, allowing the caller to specify a different version of a function to use in the context of making that function.
xdmp:function
let $function := xdmp:function(xs:QName("fn:empty")) return xdmp:apply($function, ()) => true
let $function := xdmp:function(xs:QName("fn:concat")) return xdmp:apply($function, "hello", " world") => hello world
let $function := xdmp:function(xs:QName("fn:current-date")) return xdmp:apply($function) => 2009-02-14-08:00 (or whatever is the current date)
xdmp:apply
xquery version "1.0-ml"; xdmp:function(xs:QName("fn:empty"))
xquery version "1.0-ml"; declare namespace admin="http://marklogic.com/xdmp/admin"; xdmp:function(xs:QName("admin:get-configuration"), "/MarkLogic/admin.xqy")
xquery version "1.0-ml"; let $function := xdmp:function(xs:QName("fn:concat")) return xdmp:apply($function, "hello", " world") => hello world
let $fn := xdmp:function(xs:QName("admin:get-configuration"),"/MarkLogic/admin.xqy") return xdmp:function-module($fn) ==> "/MarkLogic/admin.xqy"
let $fn := xdmp:function(xs:QName("fn:empty")) return xdmp:function-name($fn) ==> "fn:empty"