I believe all the programmer stuff here just confuses. Mathematics are a lot better way to approach matrices even with programming. Just plain type theory brings you a good starting point to matrix multiplication. The type for matrix multiplication resembles function composition:
(*) : forall x y z. Matrix x y -> Matrix y z -> Matrix x z
This because it’s a linear transformations of items from one bunch of numbers to another bunch of numbers, it’s technically a certain kind of a subclass of a function.
It doesn’t resemble function composition, it is function composition. Every matrix A is isomorphic to a linear function a, and AB ≅ a ∘ b.
AB ≅ a ∘ b
I agree with @HenriTuhola here, the programmer stuff is less clear to me than “matrix multiplication is function composition.”