Skip to content

Latest commit

 

History

History
36 lines (24 loc) · 1.18 KB

c_collect.md

File metadata and controls

36 lines (24 loc) · 1.18 KB

ccollect, c-collect

A concurrent version of collect.

Whereas "collect" executes its children one by one and then yields an array with the result of each child, "ccollect" executes the children concurrently.

In the example below, Alice, Bob, and Charly are concurrently tasked with some analysis work. The field ret coming out of the "ccollect" will be an array composed of the f.ret of each "task" call.

sequence
  ccollect [ 'alice' 'bob' 'charly' ]
    notify elt 'you received a task'
    task elt "initiate analysis for project $(project.id) as #$(idx + 1)"

Like "collect", the block iterating over an array will receive the elt, idx and len variables (current element, current element index (starting at zero), and length of the collection).

When iterating over an object (a hash), the variables will be key, val, idx, and len.

"ccollect" is actually a macro rewriting itself to a cmap.

see also

Collect, map, c-map.