t ^ mis used to declare an array with elements of type t, indexed by elements of type m. Currently, m must be a sum of units, that is, it must have the form 1 + 1 + 1 .. which can be abbreviated by a non-negative integer constant. The implementation is a struct wrapping an actual C array.
An array is just a tuple of m elements of type t. [More .. ]