it's because Nim procecedure overloads are determined at compiletime, so it's not possible to switch between them based on a runtime value (the exception being the deprecated methods).
Function programming languages have compiler smart enough to look through these small functions with overloads on runtime parameters, to then generate reasonable (or just slower) imperative code. In any case, this is an abstraction away from how computers actually work, from where the concept of a proc how the Nim compiler and procedural/imperative programming languages sees it is derived. It's not called proc in Nim for no reason, as it makes more sense to call it a procedure or a subroutine than a function. In Nim there's also func, which is more like a mathematical function, because it disallows side effects, but it's still not there.
