RE: Grounded consuming sequences, and the last() function

> 
> I don’t think they are fundamentally different, only cosmetically. In both
> cases I think users are entitled to expect that the resulting sequence will
> usually be pipelined, that is, processed one “c” element at a time. Saxon’s
> evaluation strategy for both expressions is almost exactly the same.
> 

I meant that our rules say about absorption, that whatever is in the operand, is (fully) absorbed. If the argument is at the other end of a focus-changing construct, such as /a/b/c/grounding-expr(), or a/b ! grounding-expr(), then the part that is absorbed each time is much smaller.

Of course, an implementation can do this differently, leading to a larger set of streamable scenarios. But I think this is the way we essentially describe it.

In effect of the streaming rules, a user may expect copy-of(a/b) to require more memory then a/b/copy-of(). 

Received on Thursday, 1 October 2015 15:58:39 UTC