This is an old revision of the document!


Loop statement

Alvis provides three kinds of the loop statement (see Listing 1). The first statement repeats its contents infinitely. The second one repeats its contents while the guard g is satisfied. The third statement repeats its contents every t time-units.

A guard is a Haskell logical expressions placed inside round brackets.

The contents of a loop must be put inside curly brackets and it must contain at least one statement.

The loop statement is a multi-step statement. The first step consists of evaluating the guard (if any) and entering the corresponding loop. Then, a model executes steps inside the loop.

In case of non-time models, the loop every statements works in the same way as the unguarded loop.

In case of time models, the user must ensure that the duration of the loop content does not exceed the loop period. Otherwise, the loop will restart its work after finishing the previous cycle.

  loop {...}
  loop (g) {...}
  loop (every t) {...}

Listing 1. Loop statement syntax

x = 10;
y = x;
loop (y > 1) {
  y = y - 1;
  x = x * y;
}

Listing 2. Loop statement example

Go back