Yeah, you're right, that's probably less than ideal at a fine-grained level (low-level operations).
However, if you apply the pattern to coarser functions, using your existing macro to specialize the code, then you get the best of both worlds, e.g. instead of dynamically dispatching on `add`, you can dispatch on something like `matrix_multiply`