I’ve never been able to understand this argument about knowing what parameters a function expects. In all my years of programming, if I need to understand what a function or API does, I have to read the documentation. The function signature alone cannot give me enough information.
In addition to knowing the parameters’ types, I also need to know their semantics. I need to know what range of values they take, and what range of values the function returns. I will never be able to remember all of this information, which means the function signature alone will never be adequate.
This was true when I programmed in FORTRAN, C, Java, and Go. Static typing just didn’t help me that much.