[XQuery Talk Mailing List Archive Home] [By Date] [By Thread] [By Subject] [By Author] [Recent Entries] [Reply To This Message]

How much laziness is permitted?

John Snelson john.snelson at oracle.com
Wed Mar 11 17:41:05 PST 2009


  How much laziness is permitted?
Florent Georges wrote:
> John Snelson wrote:
>> As it turns out, try/catch is actually a blocking operation
>> on lazy evaluation. If a lazily evaluated expression inside
>> a try/catch block returns (1, 2, 3) but then raises an
>> error, the implementation effectively needs to
>> "recall" the values (1, 2, 3) and instead return
>> the value of the catch expression. Since most lazy
>> implementations won't have the ability to
>> "recall" values already returned, this means they
>> can't return any values until expression evaluation has
>> terminated - in other words, they need to evaluate eagerly.
> 
>   I have some difficulties understanding the problem.  Could you provide me with a little sample or pseudo code showing such a situation?

try { 1, 2, 3, error() } catch * { "doh!" }

Typically, lazy evaluation will start returning items from expressions 
one by one as they are requested. So lets say I request an item from the 
expression above, and it gives me 1. I do this a couple more times and 
it gives me 2 and 3. Then the next time I request an item, the error() 
function raises an error - and the implementation says "Oh - wait a 
minute! Give me back those answers, I didn't mean them - I meant to 
return 'doh!'.".

In short, if there's a possibility that the try expression could raise 
an error, the try/catch block must fully evaluate it to see if an error 
occurs before it can return any values. So lazy evaluation has been 
"blocked" by the try/catch, and the expression has in practice been 
evaluated eagerly.

John

-- 
John Snelson, Oracle Corporation            http://snelson.org.uk/john
Berkeley DB XML:            http://oracle.com/database/berkeley-db/xml
XQilla:                                  http://xqilla.sourceforge.net


PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2011 All Rights Reserved.