Collections

AodhML provides built-in collection types with rich operations and type safety.

Arrays

Fixed-size, homogeneous collections:

let numbers: [i32] = [1, 2, 3, 4, 5]
let first = numbers[0]     // 1
let len = numbers.len()    // 5

// Array literal with type inference
let inferred = [10, 20, 30]  // [i32]

Dynamic Arrays (Lists)

Growable collections:

mut items = [1, 2, 3]
items.push(4)
items.pop()     // Removes and returns last element

// Slicing
let slice = items[1..3]  // Elements at index 1 and 2

Maps

Key-value associations:

let scores: Map<String, i32> = {
    "Alice": 95,
    "Bob": 87,
    "Carol": 92,
}

let alice_score = scores["Alice"]  // 95
scores["Dave"] = 88                // Insert or update

Sets

let unique = Set::from([1, 2, 2, 3, 3, 3])
println(unique.len())  // 3

unique.insert(4)
unique.contains(2)   // true

Collection Operations

let nums = [1, 2, 3, 4, 5]

// Filter
let evens = nums.filter(|x| x % 2 == 0)  // [2, 4]

// Map
let doubled = nums.map(|x| x * 2)        // [2, 4, 6, 8, 10]

// Reduce
let sum = nums.reduce(0, |acc, x| acc + x)  // 15

// Chain operations
let result = nums
    .filter(|x| x > 2)
    .map(|x| x * x)
    .collect()  // [9, 16, 25]