!!
context
=; x=(list @) [(snag 5 x) (snag 2 x)] `(list @)`~[10 20 30 40 50 60 70]

=; names the value built below it, then runs the block above.

trace the indices.

glossary

=; names the value built below it, then runs the block above with that name in scope.

=;(n=@ (mul n n) 5) is 25.

list is the type of a null-terminated sequence.

(list @) is a list of atoms; the empty list is ~.

:* makes a tuple of many elements, nesting to the right.

:*(1 2 3) is [1 2 3].

irregular forms:

[a b c d] is :*(a b c d)

%: calls a gate with several arguments, gathering them into one sample.

%:(add 2 3) is 5.

irregular forms:

(gate a b c) is %:(gate a b c)

snag picks a list element by index, counting from zero.

(snag 1 `(list @)`~[8 9 10]) is 9.

^- casts a value to a named type: it checks the value fits and relabels it.

^-(@ 42) is 42.

irregular forms:

a leading backtick cast - the type in backticks, then the value - is ^-

:~ makes a null-terminated list.

:~(1 2 3) is ~[1 2 3].

irregular forms:

~[a b c] is :~(a b c)