Dimensionality is easy, its the lengths of these dimensions that are hard. E.g. you can multiply n by k, k by m matrices to get an n by m matrix, but anything else is a type error. In Bling, I had Matrix<LN,LK> * Matrix<LK,LM> => Matrix<LN,LM>, where LN,LK,LM are type parameters up to around 10 (L0, L1, ..., L10, enough to do 3D graphics, mostly, but wouldn't work for HPC where lengths are much longer and diverse).
Looking at the linked page, extent isn't a part of a matrix's type signature, so it would be checked dynamically, correct?
Looking at the linked page, extent isn't a part of a matrix's type signature, so it would be checked dynamically, correct?