Skip to content

LoopOver

table category: table-control no `||` resultSize: 1

Declares how multi-sized result fields produce CDM rows — zipping or cartesian product.

Any CDM-table mapping that uses a multi-sized result ([] or [N] on a rule) must declare a LoopOver so the engine knows how to combine the multiple values:

  • Fields placed in the same array are zipped — the i-th result of one is paired with the i-th result of the others.
  • Fields placed in different arrays form a cartesian product.

Within a single zipped group, every field must produce the same number of results at runtime. If the [] rule is unbounded, every field in the group must also be unbounded; if the rule is bounded with [N], every field in the group must use the same N.

Even a CDM table with only one multi-sized field must declare it via LoopOver.

Parameters

Ngroup Mandatory — accepts: array of fields (:-notation)

The Nth zipped group. Within the array, all fields are paired by index. Multiple group arrays form a cartesian product.

Requires

  • Every referenced field must produce a multi-sized result.
  • Bounded multi-sized fields within a group must share the same bound.
  • Unbounded multi-sized fields cannot be grouped with bounded ones.

Examples

Single multi-sized field

LoopOver([:field_one])

Two zipped fields

LoopOver([:field_one, :field_two])

Two zipped fields × one cartesian field

LoopOver([:field_one, :field_two], [:cartesian_field_three])

See also

Spawn, Unique