// example 1: multiply by constant @Export void mul_by_5(vec &xs) { foreach x in xs { // xs = new vec(x); // return; // uint32 y = xs[x]; // if(x > 10u) continue; continue with 5u * x; } } // example 2: pairwise sum @Export vec add(const vec &xs, const vec &ys) { vec out = new vec(xs.size()); merge (x, y) in (xs, ys) into out { continue with x + y; } return out; } // example 3: minimum @Export uint32 min_of(const vec &xs) { uint32 min; accumulate x in xs with MAX_UINT32 into min { continue with (x < min) ? x : min; } return min; } // example 4: counting @Export vec count(const vec &xs, uint32 max) { vec counters{max + 1u}; project x in xs into counters { uint32 counter_idx = (x < max) ? x : max; continue[counter_idx] with (curr) -> curr + 1u; } return counters; }