Iterative
Ï€-calculus has a notion of the repetitive process: !P = P | !P. That means, you can always fork a new P process if you need it.
In Aqua, two operations correspond to it: you can call a service function (it's just available when it's needed), and you can use for loop to iterate on collections.
for expression
for expressionIn short, for looks like the following:
xs: []string
for x <- xs:
y <- foo(x)
-- x and y are not accessible there, you can even redefine them
x <- bar()
y <- baz()Contract
Iterations of
forloop are executed sequentially by default.Variables defined inside
forloop are not available outside.forloop's code has access to all variables above.forcan be executed on a variable of any Collection type.
Conditional for
forFor can be executed on a variable of any Collection type. You can make several trials in a loop, and break once any trial succeeded.
The contract is changed as in Parallel flow.
Parallel for
forRunning many operations in parallel is the most commonly used pattern for for.
The contract is changed as in Conditional flow.
Export data from for
forThe way to export data from for is the same as in Conditional return and Race patterns.
for on streams
for on streamsfor on streams is one of the most advanced and powerful parts of Aqua. See CRDT streams for details.
Last updated
Was this helpful?