However, the type system, which is based on the Hindley–Milner
polymorphism [1]}, is not strong enough to guarantee
invariant beyond simple types. For example, Kiselyov [2]}
demonstrates specialization of vector/matrix computation with respect
to the sizes of vectors and matrices in MetaOCaml but the type system
of MetaOCaml cannot prevent such specialized functions from being applied to
vectors and matrices of different sizes.
