Collections
Source: examples/collections.ion in the repo.
// Collections: lists, dicts, sets, tuples
// ---- Lists ----let nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
io::println(f"Sum: {nums.sum()}");io::println(f"Min: {nums.min()}, Max: {nums.max()}");io::println(f"Unique: {[1, 2, 2, 3, 3, 3].unique()}");io::println(f"Dedup: {[1, 1, 2, 2, 1, 1].dedup()}");io::println(f"Window(3): {[1, 2, 3, 4, 5].window(3)}");io::println(f"Chunk(3): {nums.chunk(3)}");io::println(f"Slice [2..5]: {nums.slice(2, 5)}");
// List spreadlet first = [1, 2, 3];let second = [4, 5, 6];let combined = [...first, 0, ...second];io::println(f"Spread: {combined}"); // [1, 2, 3, 0, 4, 5, 6]
// Enumeratefor (i, val) in enumerate([10, 20, 30]) { io::println(f" [{i}] = {val}");}
// ---- Dicts ----let config = #{host: "localhost", port: 8080};let extra = #{debug: true, port: 3000};
// Merge and updatelet merged = config.merge(extra);io::println(f"\nMerged: {merged}");
// Keys, values, entriesio::println(f"Keys: {merged.keys()}");io::println(f"Values: {merged.values()}");
// Dict comprehensionlet squares = #{str(n): n * n for n in 1..=5};io::println(f"Squares: {squares}");
// Map/filter on dictslet prices = #{apple: 1, banana: 3, cherry: 5, date: 2};let expensive = prices.filter(|k, v| v >= 3);io::println(f"Expensive: {expensive}");
// ---- Sets ----let a = set([1, 2, 3, 4]);let b = set([3, 4, 5, 6]);
io::println(f"\nSet A: {a}");io::println(f"Set B: {b}");io::println(f"Union: {a.union(b)}");io::println(f"Intersection: {a.intersection(b)}");io::println(f"Difference A-B: {a.difference(b)}");io::println(f"Contains 3: {a.contains(3)}");
let mut s = set([1, 2]);s = s.add(3);s = s.remove(1);io::println(f"Modified set: {s}");
// ---- Tuples ----let point = (10, 20, 30);let (x, y, z) = point;io::println(f"\nPoint: ({x}, {y}, {z})");
// Tuples in iterationlet pairs = [(1, "one"), (2, "two"), (3, "three")];for (num, name) in pairs { io::println(f" {num} = {name}");}