The first function transforms a tuple into a static array, the second
into a dynamic array. For both functions, the resulting array's element
type is the common type of the tuple's elements (it doesn't compile if there is no common type).

The first function transforms a static array into a tuple, the second does
the same for a dynamic array. For the dynamic case, you must give it the array's length
at compile-time. There is no length-checking done, so be careful.

Creates a new tuple by extracting the components of tup and reassembling them
according to an indices array. [0,1,2] means 'take the first, second and third component' and so on.
The indices can be in any order ([1,2,0]), can be repeated or omitted([0,2,2,0]) and the array
can be as long as you wish.

Takes a tuple and rotates its fields by n positions. If n>0, it rotates to the left (takes
the first n fields and put them at the end). If n<0, it rotate to the right (takes the last
n fields and put them at the beginning).