XQuery:声明一个不返回任何内容的函数

XQuery: declare a function returning nothing

declare variable $testseq as item()* := ();

declare function local:insertseq($target as item()*, $position as xs:integer?, $inserts as item()*)
as item()* (:might be great if we have a keyword to represent nothing:)
{
  fn:insert-before($target, 1, $inserts) (:change the global sequence:)
  () (:simulate returning nothing, empty sequence:)
};

element test
{
  attribute haha {"&"},
  local:insertseq($testseq, 1, ('a', 'b')),
  $testseq
}

我需要在脚本 运行 时将一些东西收集到全局序列中。在脚本的末尾,我发布了序列。函数 insertseq 必须 return 什么都没有。 XQuery 有可能吗?或者还有其他技巧吗?

BaseX 错误:

$ basex test.xqy
Stopped at /Users/jack/Documents/SHK/XSD2OWL/Workspace/xqy/test.xqy, 7/4:
[XPTY0004] Item expected, sequence found: ("a", "b").

你原来问题标题的答案实际上是:

declare function local:f() as empty-sequence() {
  ()
};

由于您可能想要解决一个特定的问题,您可以考虑创建一个新问题,使用另一个标题和相应的问题描述(包括一个带有预期输入和输出的小示例)。

在XQuery等函数式语言中,变量一旦定义就不能再赋值(参见Referential Transparency). As a consequence, you’ll need to use recursive functions to repeatedly add values to a sequence. fn:fold-left也可以这样用:第一次用感觉有点挑战,但是一旦你理解了它的作用,你不想错过的是。