Pay attention to function overload: you cannot define variable
b multiple times (in the same block) but you can overload function
foo using different count/type parameters.
So change the
bar return type can modify the invocation graph.
Function pararemter type is important as the return type, in my opinion write it explicitly is part of documentation.
Infert parameter type in some case is a trivial enhancement, harder to justify.
3.toLong() is good but
3.toBigInteger() is bad?
Kotlin doesn't have the concept of