Function signatures are more of a suggestion. You can call a function with any number of arguments and with arbitrary types. And you can add strings to ints but multiplication gives NaN. Lots of arbitrary design choices.