[Bug 14152] New: A enumerator function

http://www.w3.org/Bugs/Public/show_bug.cgi?id=14152

           Summary: A enumerator function
           Product: XPath / XQuery / XSLT
           Version: Working drafts
          Platform: PC
        OS/Version: Windows XP
            Status: NEW
          Severity: normal
          Priority: P2
         Component: XPath 3.0
        AssignedTo: jonathan.robie@gmail.com
        ReportedBy: vladimir@nesterovsky-bros.com
         QAContact: public-qt-comments@w3.org


I would like the WG to consider an addition of a function that turns a sequence
into a enumeration of values.

Consider a function like this:
 fn:enumerator($items as item()*)  as function() as item();

alternatively, signature could be:
 fn:enumerator($items as function() as item()*)  as function() as item();
 
This function receives a sequence, and returns a function item, which upon N's
call shall return N's element of the original sequence. This way, a sequence of
items is turned into a function providing a enumeration of items of the
sequence.
 
As an example consider two functions:
a) t:rand($seed as xs:double) as xs:double* - a function producing a random
number sequence;
b) t:work($input as element()) as element() - a function that generates output
from it's input, and that needs random numbers in the course of the execution.
 
t:work() may contain a code like this:
  let $rand := fn:enumerator(t:rand($seed)),
and later it can call $rand() to get a random numbers.
 
Enumerators will help to compose algorithms where one algorithm communicate
with other independant algorithms, thus making code simpler. The most obvious
class of enumerators are generators: ordered numbers, unique identifiers,
random numbers.
 
Technically, fn:enumerator() is nondetermenistic, but its "side effect" is
similar to a "side effect" of a function generate-id() from a newly created
node (see bug #13747, and bug #13494).

-- 
Configure bugmail: http://www.w3.org/Bugs/Public/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.

Received on Thursday, 15 September 2011 06:36:36 UTC