Dimensional
tabulate
defn
(Fn [(Ref (Fn [(Index (a (Size b) Opaque) Int)] c) d)] (a (Size b) c))
(tabulate f)
Tabulate maps a `lookup` function (any function that takes an `Index` as an
argument) over the positions of a sized functor.
`(tabulate (lookup f))= (id f)`
To make this function useful, one often needs to use an overarching context
to ensure the resulting functor is sized appropriately.
transpose
defn
(Fn [(Ref (a (Size b) (c (Size d) e)) StaticLifetime)] (c (Size d) (a (Size b) e)))
(transpose f)
Transpose takes a sized functor whose inhabitants are sized functors and
effectively swaps their sizes; it is equivalent to matrix transposition.
For example, given a Vector of Size 3 of Vectors of Size 2
`(Vector [(Vector [1 2]) (Vector [3 4]) (Vector [5 6])])`
transpose will return a Vector of size 2 of Vectors of size 3:
`(Vector [(Vector [1 3 5]) (Vector [2 4 6])])`