From a Python perspective, it looks to me like you&#x27;re trying to take one particular style of programming (overloading functions) to an extreme (or at least fetishizing it), when it doesn&#x27;t buy you anything particularly worthwhile, even though is comes at a high cost in terms of cognitive load (and runtime reflection in dynamic languages like Perl, Python or JavaScript).<p>Why should you have to write a special function that knows about looping, when the language already provides several perfectly fine ways to loop?<p>jQuery loves to do that kind of stuff too, slowly sniffing and savoring the arity of its arguments and reflecting on their types at runtime, then doing totally different things like getting, setting, configuring, instantiating, sending messages, and iterating, depending on the number and type of parameters, possibly selecting multiple items even if you only want one, etc...<p>Personally I don&#x27;t think that style makes code any easier to read or write or guess what it will do, and it sure is a source of a lot of implicit behavior and inexplicable errors.<p>Having one function named &quot;x&quot; that gets x, sets x, iterates over the x dimension, searches for x, or creates x widgets depending on how it&#x27;s called doesn&#x27;t make my life any easier.<p>I&#x27;m willing to read and type a few more letters to use a set of longer self documenting function names. Using explicit descriptive consistent names, instead of heavily overloading short names and sigils, also makes the documentation easier to search and the IDE easier to use.<p>Explicit is better than implicit or inexplicit.<p>What is so important about the scalar&#x2F;array dichotomy (which I think is fuzzy, arbitrary and artificial), that they get their own sigils to disginguish them, but you don&#x27;t also use different sigils to distinguish ints from floats, numbers from strings, arrays from dictionaries, objects from classes, locals from globals, objects from proxies, inputs from outputs from references, etc?<p>The root of the sigil problem is that you quickly run out of unused ASCII punctuation characters to decorate all the concepts you feel the need to distinguish. Of course you could limit identifiers to a single character and require the use of Unicode, like Bjarne Stroustrup suggested in &quot;Generalizing Overloading for C++2000&quot; [1], but isn&#x27;t it simpler and easier to just use letters that spell out what you mean as words, instead of context sensitive punctuation you have to look up in a legend?<p>I like the way C# uses &quot;in&quot;, &quot;out&quot; and &quot;ref&quot; instead of punctuation or emojis.<p>[1] <a href="http:&#x2F;&#x2F;www.stroustrup.com&#x2F;whitespace98.pdf" rel="nofollow">http:&#x2F;&#x2F;www.stroustrup.com&#x2F;whitespace98.pdf</a>