OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   RE: [xml-dev] [XQuery] FLWOR (for-let-where-order-return) equivalent to

[ Lists Home | Date Index | Thread Index ]

Yes, I think you are right. I thought about this again last night and came
to the same conclusion.

Michael Kay
http://www.saxonica.com/ 

> -----Original Message-----
> From: Daniela Florescu [mailto:dflorescu@mac.com] 
> Sent: 06 December 2004 06:41
> To: Michael Kay
> Cc: xml-dev@lists.xml.org
> Subject: Re: [xml-dev] [XQuery] FLWOR 
> (for-let-where-order-return) equivalent to FOR (for-order-return)?
> 
> > The let clause is also redundant because references to the
> > variable can be replaced by the expression to which the variable is 
> > bound.
> 
>   I am not sure I agree Michael.
> 
> To be strictly formal,  LET is not syntactic sugar in XQuery.
>   It is syntactic sugar in most pure functional programming languages 
> (i.e. can be
> eliminated by the rule that you cite) but not in XQuery, due 
> to at least
> two independent reasons:
> (a) side effects as result of node constructors and
> (b) context-sensitive semantics (e.g. namespaces and unordered{..})
> 
> Here are a couple of counter-examples.
> 
> (a) side effects as result of node constructors
> 
> let $x := <a/>
> return fn:count(($x,$x)/.)
> 
> returns 1
> 
> while
> 
> fn:count((<a/>, <a/>)/.)
> 
> 
> returns 2
> 
> (b) context sensitive semantics due to unordered {...}
> 
> let $x := (fn:doc("foo.xml")//a[@b=3])[1]
> return unordered {  $x }
> 
> is not equivalent to
> 
> unordered {(fn:doc("foo.xml")//a[@b=3])[1]}
> 
> The first one is deterministic, the second one not.
> 
> But in reality few programmers will realize those small subtle 
> differences.
> Moreover, a good compiler should be able to detect the cases where
> the rule you cite is applicable, and the apply it only under those 
> circumstances.
> 
> Best regards,
> Dana
> 
> P.S> It is late in the night and I have no XQuery processor 
> at hand to 
> run and
>   check those examples  but I hope I got them right. I am 
> sure you know 
> what I
> mean anyway.
> 
> 





 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS