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])