Given a main module with no user defined functions, is it considered better 
practice to use `declare variable` as opposed to `let`, the reason I ask is 
twofold:

1) I have started on a large code-base that seems to eschew `let` in favour of 
using `declare variable`. This seems somewhat strange to me.

2) We have seen different evaluation strategies, whereby a function which 
returns an empty-sequence which is bound in a declare variable clause, is never 
executed. Yet when we re-write that as a let binding, the code is executed. I 
think perhaps the query optimiser in ML is being too aggressive here?


For example -

declare variable $content-type as xs:string := 
slib:validated-bulk-load-content-type();

and then a few lines later we have -

slib:normal-bulk-load-response ($etag-map, fn:count 
($etag-map/store:etag-entry), $content-type)

Subsequently the `slib:normal-bulk-load-response` calls 
xdmp:set-response-content-type($content-type). However the 
`slib:validated-bulk-content-type()` function is never evaluated, we are 
certain of this because it eventually calls `fn:error`, yet the error never 
occurs!

If we switch the `declare variable $content-type` for a `let $content-type` 
then we do see the error occurring!

Cheers Adam.

DISCLAIMER
This message is intended only for the use of the person(s) ("Intended 
Recipient") to whom it is addressed. It may contain information, which is 
privileged and confidential. Accordingly any dissemination, distribution, 
copying or other use of this message or any of its content by any person other 
than the Intended Recipient may constitute a breach of civil or criminal law 
and is strictly prohibited. If you are not the Intended Recipient, please 
contact the sender as soon as possible.
Reed Business Information Limited. Registered Office: Quadrant House, The 
Quadrant, Sutton, Surrey, SM2 5AS, UK. 
Registered in England under Company No. 151537

_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general

Reply via email to