> no idea how to fix this I think you are only lazy :-)
The general approach would be to shrink and simplify the code -- the core problem seems to be the ==`() proc, so one would remove all what is not necessary to test this proc, and maybe to modify or simplify that proc. For example I would have started by replacing `func `==`*[W,H](m1, m2: Matrix[W, H]): bool = by proc isIdentical[W, H: static[int]](mx, my: Matrix[W, H]): bool = Note that in your initial definition there is no space between W and H. Nim sometimes may love spaces. The error message required type for m2: Matrix[==.W, ==.H] looks strange indeed.
