[xquery-talk] flowrrr - how to structure a function?

Martin Probst martin at x-hive.com
Wed Oct 18 23:56:37 PDT 2006

> Martin Probst wrote:
>> I think Wolfgang's function library in eXist (http://demo.exist- 
>> db.org/xquery/functions.xq) also includes functions to create user  
>> sessions, this might be more difficult to make side-effect free.  
>> I.e. if session:create(), session:set-current-user() and  
>> session:invalidate() return values if called in the right order,  
>> but give errors if called in the wrong order, it's much more  
>> difficult because you need to provide access to those values. I'm  
>> not picking on you Wolfgang, I rather think your library is a good  
>> example of what one does need in webapps.
> All that would need to be done to make functions like that side- 
> effect free is to postpone the actual changes until after the query  
> has exited. You would then only have to define what would happen if  
> two such postponed changes contradicted each other. This is the  
> approach that XQuery Update seems to be taking.

I think that's not enough - if your function has a side effect _and_  
returns a value (based on the side effect), you cannot postpone  
evaluation like in XQuery Updates, because the user needs his values  
right now. Also you'd still need to ensure correct call order in some  
way, which is (at least at the moment) not relevant to XQuery Updates.


Martin Probst
X-Hive Corporation
martin at x-hive.com

More information about the talk mailing list