I don't remember seeing an xquery function that tries to return it's input unchanged.

Can this be improved:

declare function local:id($e as element()?, $acc as element()?) as element() {
  if (empty($e)) then
    $acc
 else
    local:id(()
            , element {node-name($e)} {
              $e/@*
              , for $node in $e/node()
                return typeswitch($node)
                         case element() return local:id($node, $acc)
                         default return $node
            })
};

The idea is that functions that do more than return their input could be based on the function, and benefit from tail call optimization.

Kendall


_______________________________________________
[email protected]
http://x-query.com/mailman/listinfo/talk

Reply via email to