Orc does not have any explicit looping constructs. Most of the time, where a loop might be used in other languages, Orc programs use one of two strategies:
When the iterations of the loops can occur in parallel, write an expression
that expands the data into a sequence of publications, and
use a sequential operator to do something for each publication. This is the strategy
that uses functions like each
, repeat
, and upto
.
When the iterations of the loops must occur in sequence, write a tail
recursive function that iterates over the data. Any loop can be rewritten as a
tail recursion. Typically the data of interest is in a list, so one of the standard
list functions, such as foldl
, applies. The library also defines a
function while
, which handles many of the common use cases of
while loops.