## Parallel Iterations

The loop construction iterates the triggering of a group (the loop body): one body instance is triggered after the other, with a given interval (the loop period). The action ForAll (for parallel iteration) instantiates a group in parallel for each element in an iteration set. The simplest example is the iteration on the elements of a tab:

              $t := tab [1, 2, 3]
              forall $x in $t
              {
                   (3 - $x) print OK $x " at time" (3 - $x) " = (3 - " $x ")"
              }

will trigger in parallel a group for each element in the tab referred by `$t`. For each group, the iterator variable `$x` takes the value of its corresponding element in the tab. It is implicitly a local variable, not visible outside the `ForAll` body.

The result of this example is to `print` in sequence

          OK 3 at time 0 = (3 - 3)
          OK 2 at time 1 = (3 - 2)
          OK 1 at time 2 = (3 - 1)

The general form of a parallel iteration is:

              forall $var in expression
              {
                    ; action sequence
              }

where `expression` evaluates to a `int`, a `tab` or a `proc`:

- If the iteration set \(n\) is an int, the values of the iterator are the integers \(0, ..., (n-1)\;\) if \(n\) is positive, and \((n+1), (n+2), ..., 0\;\) if \(n\) is negative.

- If the iteration set is a tab, the values of the iterator are the tab's elements.

- If the iteration set is a proc or an obj, the values of the iterator are the exec that correspond to the proc's or obj's instances.

Parallel iterations also accept a map for the iteration set. In this case, the syntax introduces two variables to refers to the keys and the values in the map:

              $m := map { (1, "one"), (2, "two"), (3, "three") }
              forall $k, $v in $m
              {
                    print $k " => " $v
              }

will print:

          1 => one
          2 => two
          3 => three

There is also a parralel iteration expression allowed only in the context of a function definition, see the section extended expressions.

#### Search

From here you can search these documents. Enter your search terms below.