Packed loops

In Dyon, you can pack mathematical loops together of the same kind:

#![allow(unused)]
fn main() {
for i, j, k {
    println(list[i][j][k])
}
}

This is equivalent to:

#![allow(unused)]
fn main() {
for i {
    for j {
        for k {
            println(list[i][j][k])
        }
    }
}
}

You can also specify start and end for each index:

fn main() {
    list := [1, 2, 3, 4]
    n := len(list)

    // For each pair.
    for i n, j [i + 1, n) {
        println(abs(list[i] - list[j]))
    }
}

Pro tip: If you find a packed loop hard to understand, you can print out closure to see how it works:

fn main() {
    a := \() = {
        list := [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
        for i, j, k {
            println(list[i][j][k])
        }
    }
    println(a)
}