Tzopilotl
Docs
GitHub

Tzopilotl by Example

11. Array and Tuple Arithmetic

11.1 Element-wise Operations

let a = [1, 2, 3, 4, 5];
let b = [10, 20, 30, 40, 50];

println(a + b);     -- [11, 22, 33, 44, 55]
println(a * b);     -- [10, 40, 90, 160, 250]
println(b - a);     -- [9, 18, 27, 36, 45]
println(-a);        -- [-1, -2, -3, -4, -5]

11.2 Scalar Broadcasting

let a = [100, 200, 300];

println(a + 1);      -- [101, 201, 301]
println(a * 2);      -- [200, 400, 600]
println(10 * a);      -- [1000, 2000, 3000]

11.3 Tuple Arithmetic

let p1 = (1.0, 2.0);
let p2 = (3.0, 4.0);

println(p1 + p2);           -- (4.0, 6.0)
println((p1 + p2) * 0.5);  -- (2.0, 3.0) -- midpoint
println(p2 - p1);           -- (2.0, 2.0)

-- Mixed numeric types in tuples
let m1 = (1, 2.5);
let m2 = (3, 1.5);
println(m1 + m2);   -- (4, 4.0)

11.4 Tuple-Array Broadcasting

let tup = (10, 20);
let arr = [1, 2, 3];

-- Each tuple field is broadcast across the array
println(tup + arr);   -- ([11, 12, 13], [21, 22, 23])
println(tup * arr);   -- ([10, 20, 30], [20, 40, 60])
println(arr + tup);   -- ([11, 12, 13], [21, 22, 23])