> On 12 Jan 2017, at 12:21, W.S. Hager <[email protected]> wrote:
> 
> Hello,
> 
> Not sure if anyone already noticed, but there's an error in the XPath/XQuery 
> F&O docs, where the example implementation of array:fold will always return 
> an array...

If they have noticed, they haven't reported it. Logged here as a bug:

https://www.w3.org/Bugs/Public/show_bug.cgi?id=30045

If you spot such things in future, please report them using the feedback 
mechanisms described in the status section of the spec.
> 
> More importantly,

No, I think the subsequent points are far less important. The code used to 
specify the effect of the function is intended to be a specification, not an 
efficient implementation.

> it seems to me that a textbook implementation of fold-right was used, without 
> the notice that this will only work in a lazy evaluation context. If you 
> inspect the code as eagerly evaluated, you'll see that the array is looped 
> over multiple times (the result is the same of course). This makes for a very 
> inefficient loop AFAICT, but I may be mistaken.

I don't think it's true that it only works with lazy evaluation. It may well be 
true that it only works efficiently with lazy evaluation, but that's 
irrelevant: this is a specfication of the effect of the function, not a 
proposed implementation.
> 
> 
> Is there any assumption about the laziness of an XQuery implementation? Are 
> there any a priori lazy implementations out there?
> 

I think an implementation without lazy evaluation would be incredibly 
inefficient, and I would expect that most serious implementations use lazy 
evaluation to a lesser or greater extent. Certainly Saxon does so. I have seen 
open source XPath implementations that materialize all intermediate results, 
and frankly I don't think such an implementation is fit for purpose.

As it happens, this very morning I've been working on a problem where excessive 
use of lazy evaluation causes stack overflow problems when fold-left is used to 
process a very long sequence: you can find it here if you're interested:

https://saxonica.plan.io/issues/3106

Michael Kay
Saxonica


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

Reply via email to