4 function reverse(f, s, var)
7 -- First call the normal iterator
9 local ret = { f(s, var) };
11 if var == nil then break; end
12 table.insert(results, 1, ret);
15 -- Then return our reverse one
16 local i,max = 0, #results;
17 return function (results)
20 return unpack(results[i]);
25 -- Iterate only over keys in a table
26 local function _keys_it(t, key)
27 return (next(t, key));
33 -- Iterate only over values in a table
37 key, val = next(t, key);
42 -- Given an iterator, iterate only over unique items
43 function unique(f, s, var)
48 local ret = { f(s, var) };
50 if var == nil then break; end
59 --[[ Return the number of items an iterator returns ]]--
60 function count(f, s, var)
64 local ret = { f(s, var) };
66 if var == nil then break; end
73 -- Convert the values returned by an iterator to an array
74 function it2array(f, s, var)
78 if var == nil then break; end
84 -- Treat the return of an iterator as key,value pairs,
86 function it2table(f, s, var)
89 var, var2 = f(s, var);
90 if var == nil then break; end