One big problem of dynamically typed languages is type mismatch errors only pop up at run time. When I say "type mismatch" I refer to the case when the compiler/interpreter cannot reasonably guess a conversion, therefore e.g. assigning an integer value to a double variable does not count.
It'll be nice to allow quick coding leaving out type annotations for fast prototyping; later on to reach production, the programmer can improve reliability and reduce run-time errors by annotating types as much as possible. Is there an option or separate tool that can perform a best-effort type check on the source code *before *it starts running? I heard that type mismatch may be caught by JIT compiler early if all parameters of a function have been type annotated; however JIT compilation happens at run time in user's perspective. I think it's desirable to be able to catch problems even before running anything. And the option / tool does not (and will not be able to) catch all type mismatch problems; but it should be able to flag clear violations. Thanks, -Zhong
